ZQuest Classic Coverage Report


Directory: src/
File: src/parser/y.tab.cpp
Date: 2025-01-10 07:34:20
Exec Total Coverage
Lines: 1089 1760 61.9%
Functions: 39 51 76.5%
Branches: 837 2300 36.4%

Line Branch Exec Source
1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
36 especially those whose name start with YY_ or yy_. They are
37 private implementation details that can be changed or removed. */
38
39 /* Identify Bison output, and Bison version. */
40 #define YYBISON 30802
41
42 /* Bison version string. */
43 #define YYBISON_VERSION "3.8.2"
44
45 /* Skeleton name. */
46 #define YYSKELETON_NAME "glr.c"
47
48 /* Pure parsers. */
49 #define YYPURE 0
50
51
52
53
54
55
56 /* First part of user prologue. */
57 #line 8 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
58
59 #include "parserDefs.h"
60 #include <stdlib.h>
61 #include <stdio.h>
62 #include <cassert>
63 #include <string>
64 #include <set>
65 #include <sstream>
66 #include "ASTVisitors.h"
67 #include "CompileOption.h"
68 #include "zsyssimple.h"
69 #include "parser/ParserHelper.h"
70 #include "base/util.h"
71
72 using std::string;
73 using std::ostringstream;
74 using namespace ZScript;
75
76 #define YYINCLUDED_STDLIB_H
77 extern int32_t yydebug;
78 extern int32_t yyrow;
79 extern int32_t yycol;
80 extern char* yytext;
81 extern int32_t yyleng;
82 extern int32_t yylex(void);
83 extern FILE *yyin, *yyout;
84 extern ZScript::AST* first_identifier_for_line;
85 extern void resetLexer();
86 void yyerror(std::unique_ptr<ASTFile>& root, const char* s);
87 void yymsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
88 void yywarn(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
89 void yyerrmsg(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
90 void yydb(string const& message, int32_t row = yyrow, int32_t col = yycol, char const* txt = yytext);
91 std::string curfilename;
92 extern YYLTYPE noloc;
93
94 #define push_front(v, elem) (v).insert((v).begin(), elem)
95 void trunc_str(std::string& str, size_t sz, std::string const& header, int32_t row = yyrow,
96 int32_t col = yycol, char const* txt = yytext)
97 {
98 if(str.size() > sz)
99 {
100 yyerrmsg("ERROR: "+header+": String value '" + str + "' is too long. Max '"+std::to_string(sz)+"' characters.", row, col, txt);
101 str = str.substr(0,sz);
102 }
103 }
104
105 enum
106 {
107 ANNTY_NONE,
108 ANNTY_STR,
109 ANNTY_INT,
110 ANNTY_MAX
111 };
112 static string annot_tys[ANNTY_MAX] = {"Empty", "String", "Number"};
113
114 int annot_row, annot_col;
115 string annot_err_txt;
116 static const string annot_err_header = "ERROR: Bad Annotation Value";
117 struct AnnotData
118 {
119 string key, strval;
120 string val, unescaped_val;
121 zfix intval;
122 uint type;
123 };
124 void annot_errstr(string const& str)
125 {
126 yyerrmsg(str, annot_row, annot_col, annot_err_txt.c_str());
127 }
128 void annot_trunc_str(string& str, size_t size)
129 {
130 trunc_str(str, size, annot_err_header, annot_row, annot_col, annot_err_txt.c_str());
131 }
132 bool annot_type_check(uint expected, AnnotData const& data)
133 {
134 if(expected == data.type)
135 return true;
136 annot_errstr("ERROR: Bad Annotation Value: @"+data.key
137 +" expects a "+annot_tys[expected]+", not a "+annot_tys[data.type]);
138 return false;
139 }
140 void handle_annotations(ASTAnnotationList* list, std::function<bool(AnnotData&)> fn)
141 {
142 owning_vector<ASTAnnotation>& set = list->set;
143 annot_row = list->location.first_line;
144 annot_col = list->location.first_column;
145 std::set<std::string> used_keys;
146 for(size_t q = 0; q < set.size(); ++q)
147 {
148 ASTAnnotation* a = set[q];
149 AnnotData data = AnnotData();
150 data.key = a->key->getValue();
151 data.type = ANNTY_NONE;
152 data.strval = "";
153 data.intval = 0;
154 if(a->strval)
155 {
156 data.type = ANNTY_STR;
157 data.strval = a->strval->getValue();
158 }
159 else if(a->intval)
160 {
161 data.type = ANNTY_INT;
162 data.intval = zslongToFix(a->intval->getValue(nullptr));
163 }
164
165 data.val = "";
166 data.unescaped_val = "";
167 switch(data.type)
168 {
169 case ANNTY_STR:
170 data.val = data.strval;
171 data.unescaped_val = util::disallow_escapes(util::escape_characters(data.strval));
172 break;
173 case ANNTY_INT:
174 data.val = data.unescaped_val = data.intval.str();
175 break;
176 }
177 annot_err_txt = "@" + data.key + "(" + data.val + ")";
178
179 if(used_keys.contains(data.key))
180 {
181 annot_errstr("ERROR: Duplicate Annotation Key: @"+data.key+" was already set.");
182 continue;
183 }
184 if(!fn(data))
185 annot_errstr("ERROR: Bad Annotation Key: '"+data.val+"'");
186 }
187 delete list;
188 }
189
190 ASTExpr* handle_statement_expr(ASTExpr* expr)
191 {
192 if(ASTExprIncrement* increm = dynamic_cast<ASTExprIncrement*>(expr))
193 {
194 increm->is_pre = true;
195 }
196 else if(ASTExprDecrement* decrem = dynamic_cast<ASTExprDecrement*>(expr))
197 {
198 decrem->is_pre = true;
199 }
200 return expr;
201 }
202
203 #pragma warning( disable : 4065 )
204
205 #line 206 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
206
207 # ifndef YY_CAST
208 # ifdef __cplusplus
209 # define YY_CAST(Type, Val) static_cast<Type> (Val)
210 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
211 # else
212 # define YY_CAST(Type, Val) ((Type) (Val))
213 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
214 # endif
215 # endif
216 # ifndef YY_NULLPTR
217 # if defined __cplusplus
218 # if 201103L <= __cplusplus
219 # define YY_NULLPTR nullptr
220 # else
221 # define YY_NULLPTR 0
222 # endif
223 # else
224 # define YY_NULLPTR ((void*)0)
225 # endif
226 # endif
227
228 #include "y.tab.hpp"
229
230 /* Symbol kind. */
231 enum yysymbol_kind_t
232 {
233 YYSYMBOL_YYEMPTY = -2,
234 YYSYMBOL_YYEOF = 0, /* "end of file" */
235 YYSYMBOL_YYerror = 1, /* error */
236 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
237 YYSYMBOL_SCRIPT = 3, /* SCRIPT */
238 YYSYMBOL_ZCLASS = 4, /* ZCLASS */
239 YYSYMBOL_FOR = 5, /* FOR */
240 YYSYMBOL_LOOP = 6, /* LOOP */
241 YYSYMBOL_IF = 7, /* IF */
242 YYSYMBOL_ELSE = 8, /* ELSE */
243 YYSYMBOL_SWITCH = 9, /* SWITCH */
244 YYSYMBOL_CASE = 10, /* CASE */
245 YYSYMBOL_DEFAULT = 11, /* DEFAULT */
246 YYSYMBOL_RETURN = 12, /* RETURN */
247 YYSYMBOL_IMPORT = 13, /* IMPORT */
248 YYSYMBOL_ZTRUE = 14, /* ZTRUE */
249 YYSYMBOL_ZFALSE = 15, /* ZFALSE */
250 YYSYMBOL_WHILE = 16, /* WHILE */
251 YYSYMBOL_BREAK = 17, /* BREAK */
252 YYSYMBOL_CONTINUE = 18, /* CONTINUE */
253 YYSYMBOL_ZCONST = 19, /* ZCONST */
254 YYSYMBOL_DO = 20, /* DO */
255 YYSYMBOL_TYPEDEF = 21, /* TYPEDEF */
256 YYSYMBOL_EXPECTERROR = 22, /* EXPECTERROR */
257 YYSYMBOL_OPTIONVALUE = 23, /* OPTIONVALUE */
258 YYSYMBOL_ISINCLUDED = 24, /* ISINCLUDED */
259 YYSYMBOL_DEFINE = 25, /* DEFINE */
260 YYSYMBOL_ENUM = 26, /* ENUM */
261 YYSYMBOL_NAMESPACE = 27, /* NAMESPACE */
262 YYSYMBOL_USING = 28, /* USING */
263 YYSYMBOL_ALWAYS = 29, /* ALWAYS */
264 YYSYMBOL_ZASM = 30, /* ZASM */
265 YYSYMBOL_INCLUDE = 31, /* INCLUDE */
266 YYSYMBOL_INCLUDEPATH = 32, /* INCLUDEPATH */
267 YYSYMBOL_INCLUDEIF = 33, /* INCLUDEIF */
268 YYSYMBOL_UNTIL = 34, /* UNTIL */
269 YYSYMBOL_UNLESS = 35, /* UNLESS */
270 YYSYMBOL_REPEAT = 36, /* REPEAT */
271 YYSYMBOL_INLINE = 37, /* INLINE */
272 YYSYMBOL_INTERNAL = 38, /* INTERNAL */
273 YYSYMBOL_STATIC = 39, /* STATIC */
274 YYSYMBOL_CONSTEXPR = 40, /* CONSTEXPR */
275 YYSYMBOL_NEW = 41, /* NEW */
276 YYSYMBOL_DELETE = 42, /* DELETE */
277 YYSYMBOL_CASSERT = 43, /* CASSERT */
278 YYSYMBOL_ZAUTO = 44, /* ZAUTO */
279 YYSYMBOL_ZVOID = 45, /* ZVOID */
280 YYSYMBOL_UNTYPED = 46, /* UNTYPED */
281 YYSYMBOL_ZBOOL = 47, /* ZBOOL */
282 YYSYMBOL_ZFLOAT = 48, /* ZFLOAT */
283 YYSYMBOL_ZCHAR = 49, /* ZCHAR */
284 YYSYMBOL_ZLONG = 50, /* ZLONG */
285 YYSYMBOL_ZRGB = 51, /* ZRGB */
286 YYSYMBOL_COMMA = 52, /* COMMA */
287 YYSYMBOL_DOT = 53, /* DOT */
288 YYSYMBOL_SEMICOLON = 54, /* SEMICOLON */
289 YYSYMBOL_SCOPERES = 55, /* SCOPERES */
290 YYSYMBOL_COLON = 56, /* COLON */
291 YYSYMBOL_IN = 57, /* IN */
292 YYSYMBOL_LPAREN = 58, /* LPAREN */
293 YYSYMBOL_RPAREN = 59, /* RPAREN */
294 YYSYMBOL_EMPTYBRACKETS = 60, /* EMPTYBRACKETS */
295 YYSYMBOL_LBRACKET = 61, /* LBRACKET */
296 YYSYMBOL_RBRACKET = 62, /* RBRACKET */
297 YYSYMBOL_LBRACE = 63, /* LBRACE */
298 YYSYMBOL_RBRACE = 64, /* RBRACE */
299 YYSYMBOL_QMARK = 65, /* QMARK */
300 YYSYMBOL_ARROW = 66, /* ARROW */
301 YYSYMBOL_INCREMENT = 67, /* INCREMENT */
302 YYSYMBOL_DECREMENT = 68, /* DECREMENT */
303 YYSYMBOL_NOT = 69, /* NOT */
304 YYSYMBOL_BITNOT = 70, /* BITNOT */
305 116002 YYSYMBOL_EXPN = 71, /* EXPN */
306 YYSYMBOL_TIMES = 72, /* TIMES */
307 YYSYMBOL_DIVIDE = 73, /* DIVIDE */
308 YYSYMBOL_MODULO = 74, /* MODULO */
309 YYSYMBOL_PLUS = 75, /* PLUS */
310 YYSYMBOL_MINUS = 76, /* MINUS */
311 YYSYMBOL_LSHIFT = 77, /* LSHIFT */
312 28404499 YYSYMBOL_RSHIFT = 78, /* RSHIFT */
313 28404499 YYSYMBOL_LE = 79, /* LE */
314 YYSYMBOL_LT = 80, /* LT */
315 4459 YYSYMBOL_GE = 81, /* GE */
316 4459 YYSYMBOL_GT = 82, /* GT */
317
1/2
✓ Branch 0 taken 4459 times.
✗ Branch 1 not taken.
4459 YYSYMBOL_EQ = 83, /* EQ */
318 YYSYMBOL_NE = 84, /* NE */
319
2/6
✓ Branch 0 taken 116057 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 116057 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
116057 YYSYMBOL_BITAND = 85, /* BITAND */
320 YYSYMBOL_BITXOR = 86, /* BITXOR */
321 YYSYMBOL_BITOR = 87, /* BITOR */
322 YYSYMBOL_AND = 88, /* AND */
323 114435 YYSYMBOL_OR = 89, /* OR */
324 1965 YYSYMBOL_XOR = 90, /* XOR */
325 7568 YYSYMBOL_ASSIGN = 91, /* ASSIGN */
326 145454 YYSYMBOL_PLUSASSIGN = 92, /* PLUSASSIGN */
327 2496 YYSYMBOL_MINUSASSIGN = 93, /* MINUSASSIGN */
328 24444800 YYSYMBOL_TIMESASSIGN = 94, /* TIMESASSIGN */
329 2248854 YYSYMBOL_DIVIDEASSIGN = 95, /* DIVIDEASSIGN */
330 3490 YYSYMBOL_MODULOASSIGN = 96, /* MODULOASSIGN */
331 10 YYSYMBOL_LSHIFTASSIGN = 97, /* LSHIFTASSIGN */
332 39116 YYSYMBOL_RSHIFTASSIGN = 98, /* RSHIFTASSIGN */
333 1396305 YYSYMBOL_BITANDASSIGN = 99, /* BITANDASSIGN */
334 YYSYMBOL_BITXORASSIGN = 100, /* BITXORASSIGN */
335 YYSYMBOL_BITORASSIGN = 101, /* BITORASSIGN */
336 6 YYSYMBOL_ANDASSIGN = 102, /* ANDASSIGN */
337 YYSYMBOL_ORASSIGN = 103, /* ORASSIGN */
338 YYSYMBOL_CAST = 104, /* CAST */
339 YYSYMBOL_RANGE = 105, /* RANGE */
340 YYSYMBOL_RANGE_L = 106, /* RANGE_L */
341 YYSYMBOL_RANGE_R = 107, /* RANGE_R */
342 YYSYMBOL_RANGE_LR = 108, /* RANGE_LR */
343 YYSYMBOL_RANGE_N = 109, /* RANGE_N */
344 YYSYMBOL_APPXEQUAL = 110, /* APPXEQUAL */
345 8 YYSYMBOL_DOUBLEBANG = 111, /* DOUBLEBANG */
346 1442663 YYSYMBOL_PERCENT = 112, /* PERCENT */
347 YYSYMBOL_BITNOTASSIGN = 113, /* BITNOTASSIGN */
348 YYSYMBOL_INVMOD = 114, /* INVMOD */
349 YYSYMBOL_DOUBLEADDR = 115, /* DOUBLEADDR */
350 YYSYMBOL_DOUBLESTAR = 116, /* DOUBLESTAR */
351 YYSYMBOL_HANDLE = 117, /* HANDLE */
352 YYSYMBOL_HANDLETOHANDLE = 118, /* HANDLETOHANDLE */
353 YYSYMBOL_ADDR = 119, /* ADDR */
354 YYSYMBOL_HASH = 120, /* HASH */
355 YYSYMBOL_ENDLINE = 121, /* ENDLINE */
356 YYSYMBOL_OPTION = 122, /* OPTION */
357 YYSYMBOL_INHERIT = 123, /* INHERIT */
358 YYSYMBOL_IDENTIFIER = 124, /* IDENTIFIER */
359 YYSYMBOL_QUOTEDSTRING = 125, /* QUOTEDSTRING */
360 YYSYMBOL_CASESTRING = 126, /* CASESTRING */
361 YYSYMBOL_IMPORTSTRING = 127, /* IMPORTSTRING */
362 YYSYMBOL_SINGLECHAR = 128, /* SINGLECHAR */
363 YYSYMBOL_NUMBER = 129, /* NUMBER */
364 YYSYMBOL_LONGNUMBER = 130, /* LONGNUMBER */
365 YYSYMBOL_YYACCEPT = 131, /* $accept */
366 YYSYMBOL_Init = 132, /* Init */
367 YYSYMBOL_Global_List = 133, /* Global_List */
368 YYSYMBOL_Global_Statement = 134, /* Global_Statement */
369 YYSYMBOL_Trail_Comma_RBrace = 135, /* Trail_Comma_RBrace */
370 YYSYMBOL_Namespace = 136, /* Namespace */
371 YYSYMBOL_Namespace_Block_List = 137, /* Namespace_Block_List */
372 YYSYMBOL_Namespace_Statement = 138, /* Namespace_Statement */
373 8507 YYSYMBOL_Using = 139, /* Using */
374 8507 YYSYMBOL_AlwaysUsing = 140, /* AlwaysUsing */
375 8507 YYSYMBOL_Import = 141, /* Import */
376
2/2
✓ Branch 0 taken 8506 times.
✓ Branch 1 taken 1 times.
8507 YYSYMBOL_IncludePath = 142, /* IncludePath */
377 YYSYMBOL_Option = 143, /* Option */
378 8506 YYSYMBOL_Statement_Assert = 144, /* Statement_Assert */
379 8506 YYSYMBOL_DataTypeDef = 145, /* DataTypeDef */
380 8506 YYSYMBOL_StandardDataTypedef = 146, /* StandardDataTypedef */
381
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 8506 times.
8506 YYSYMBOL_DataType = 147, /* DataType */
382 8506 YYSYMBOL_DataType_Mods = 148, /* DataType_Mods */
383 8506 YYSYMBOL_DataType_Base = 149, /* DataType_Base */
384
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 YYSYMBOL_ScriptTypeDef = 150, /* ScriptTypeDef */
385 YYSYMBOL_Data = 151, /* Data */
386
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 YYSYMBOL_Data_List = 152, /* Data_List */
387 YYSYMBOL_Data_Element = 153, /* Data_Element */
388 YYSYMBOL_Data_Element_Array_List = 154, /* Data_Element_Array_List */
389 YYSYMBOL_Single_Data_req_assign = 155, /* Single_Data_req_assign */
390 YYSYMBOL_Data_Element_Array_Element = 156, /* Data_Element_Array_Element */
391 YYSYMBOL_Data_Element_Array_Element_Size_List = 157, /* Data_Element_Array_Element_Size_List */
392 YYSYMBOL_Function = 158, /* Function */
393 YYSYMBOL_Function_Typeless = 159, /* Function_Typeless */
394 YYSYMBOL_Function_Heading = 160, /* Function_Heading */
395 YYSYMBOL_FunctionTemplateList = 161, /* FunctionTemplateList */
396 YYSYMBOL_Function_Parameters_List = 162, /* Function_Parameters_List */
397 YYSYMBOL_Function_Parameters_Element = 163, /* Function_Parameters_Element */
398 YYSYMBOL_Function_OptParams_List = 164, /* Function_OptParams_List */
399 YYSYMBOL_Function_VarArg_Element = 165, /* Function_VarArg_Element */
400 YYSYMBOL_Class_Ident = 166, /* Class_Ident */
401 YYSYMBOL_Class = 167, /* Class */
402 YYSYMBOL_Class_Block = 168, /* Class_Block */
403 YYSYMBOL_Class_Block_List = 169, /* Class_Block_List */
404 YYSYMBOL_Class_Constructor = 170, /* Class_Constructor */
405 YYSYMBOL_Class_Destructor = 171, /* Class_Destructor */
406 YYSYMBOL_Class_Data = 172, /* Class_Data */
407 YYSYMBOL_Class_Block_Element = 173, /* Class_Block_Element */
408 YYSYMBOL_Annotated_Script = 174, /* Annotated_Script */
409 YYSYMBOL_Script = 175, /* Script */
410 YYSYMBOL_Script_Type = 176, /* Script_Type */
411 YYSYMBOL_Script_Block = 177, /* Script_Block */
412 YYSYMBOL_Script_Block_List = 178, /* Script_Block_List */
413 YYSYMBOL_Script_Block_Element = 179, /* Script_Block_Element */
414 YYSYMBOL_Annotation_List = 180, /* Annotation_List */
415 YYSYMBOL_Annotation = 181, /* Annotation */
416 YYSYMBOL_Block_Statement = 182, /* Block_Statement */
417 YYSYMBOL_Statement = 183, /* Statement */
418 8507 YYSYMBOL_Statement_NoSemicolon = 184, /* Statement_NoSemicolon */
419
2/4
✓ Branch 0 taken 8507 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8507 times.
✗ Branch 3 not taken.
8507 YYSYMBOL_Statement_Block = 185, /* Statement_Block */
420 YYSYMBOL_Statement_Block_List = 186, /* Statement_Block_List */
421 YYSYMBOL_Statement_If = 187, /* Statement_If */
422 YYSYMBOL_If_Body = 188, /* If_Body */
423 YYSYMBOL_Statement_Switch = 189, /* Statement_Switch */
424 YYSYMBOL_Statement_Switch_Body = 190, /* Statement_Switch_Body */
425 YYSYMBOL_Statement_Switch_Cases = 191, /* Statement_Switch_Cases */
426 56291 YYSYMBOL_Statement_For = 192, /* Statement_For */
427 56291 YYSYMBOL_Statement_CommaList = 193, /* Statement_CommaList */
428 56291 YYSYMBOL_Statement_For_Standard = 194, /* Statement_For_Standard */
429 56291 YYSYMBOL_Statement_For_Each = 195, /* Statement_For_Each */
430 56291 YYSYMBOL_Annotated_Loop = 196, /* Annotated_Loop */
431 YYSYMBOL_Statement_Loop = 197, /* Statement_Loop */
432 YYSYMBOL_Statement_Loop_Inf = 198, /* Statement_Loop_Inf */
433 YYSYMBOL_Statement_Loop_Range = 199, /* Statement_Loop_Range */
434 YYSYMBOL_Statement_Loop_Range_Base = 200, /* Statement_Loop_Range_Base */
435 YYSYMBOL_Token_In = 201, /* Token_In */
436 YYSYMBOL_Statement_While = 202, /* Statement_While */
437 YYSYMBOL_Statement_Do = 203, /* Statement_Do */
438 YYSYMBOL_Statement_Repeat = 204, /* Statement_Repeat */
439 YYSYMBOL_Statement_Return = 205, /* Statement_Return */
440 YYSYMBOL_Statement_CompileError = 206, /* Statement_CompileError */
441 YYSYMBOL_Annotated_Enum = 207, /* Annotated_Enum */
442 YYSYMBOL_DataEnum = 208, /* DataEnum */
443
2/6
✓ Branch 0 taken 8508 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8508 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8508 YYSYMBOL_Enum_Block = 209, /* Enum_Block */
444 YYSYMBOL_ScopeRes = 210, /* ScopeRes */
445 YYSYMBOL_Identifier_List = 211, /* Identifier_List */
446 YYSYMBOL_Scoperes_Identifier_List = 212, /* Scoperes_Identifier_List */
447 YYSYMBOL_Mixed_Identifier_List = 213, /* Mixed_Identifier_List */
448 YYSYMBOL_idlist_scopres = 214, /* idlist_scopres */
449 YYSYMBOL_idlist_dot = 215, /* idlist_dot */
450 YYSYMBOL_Ambigious_Iden_List = 216, /* Ambigious_Iden_List */
451 YYSYMBOL_Identifier = 217, /* Identifier */
452 YYSYMBOL_Func_Left = 218, /* Func_Left */
453 YYSYMBOL_Function_Call = 219, /* Function_Call */
454 YYSYMBOL_Function_Call_Parameters = 220, /* Function_Call_Parameters */
455 939 YYSYMBOL_Expr_1 = 221, /* Expr_1 */
456 39 YYSYMBOL_Expr_2 = 222, /* Expr_2 */
457 YYSYMBOL_Expr_Arrow = 223, /* Expr_Arrow */
458 350 YYSYMBOL_Expr_3 = 224, /* Expr_3 */
459 63376 YYSYMBOL_Expr_4 = 225, /* Expr_4 */
460 28 YYSYMBOL_Expr_5 = 226, /* Expr_5 */
461 28 YYSYMBOL_Expr_6 = 227, /* Expr_6 */
462 4 YYSYMBOL_Expr_7 = 228, /* Expr_7 */
463 29 YYSYMBOL_Expr_8 = 229, /* Expr_8 */
464 1 YYSYMBOL_Expr_9 = 230, /* Expr_9 */
465 5 YYSYMBOL_Expr_10 = 231, /* Expr_10 */
466 YYSYMBOL_Expr_11 = 232, /* Expr_11 */
467 YYSYMBOL_Expr_12 = 233, /* Expr_12 */
468 YYSYMBOL_Expr_13 = 234, /* Expr_13 */
469 YYSYMBOL_Expr_14 = 235, /* Expr_14 */
470 YYSYMBOL_Expr_15 = 236, /* Expr_15 */
471 YYSYMBOL_Expr_16 = 237, /* Expr_16 */
472 YYSYMBOL_Expr_17 = 238, /* Expr_17 */
473 YYSYMBOL_Expr_18 = 239, /* Expr_18 */
474 YYSYMBOL_Expression = 240, /* Expression */
475 YYSYMBOL_Statement_Expression = 241, /* Statement_Expression */
476 YYSYMBOL_Expression_Constant = 242, /* Expression_Constant */
477 7 YYSYMBOL_Expression_Const_Range = 243, /* Expression_Const_Range */
478
2/6
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7 YYSYMBOL_Expression_Range = 244, /* Expression_Range */
479 YYSYMBOL_Literal = 245, /* Literal */
480 YYSYMBOL_QuotedString = 246, /* QuotedString */
481 YYSYMBOL_Literal_String = 247, /* Literal_String */
482 YYSYMBOL_Literal_Bool = 248, /* Literal_Bool */
483 YYSYMBOL_Literal_Array = 249, /* Literal_Array */
484 YYSYMBOL_Literal_Array_Body = 250 /* Literal_Array_Body */
485 };
486 typedef enum yysymbol_kind_t yysymbol_kind_t;
487
488
489 /* Default (constant) value used for initialization for null
490 right-hand sides. Unlike the standard yacc.c template, here we set
491 the default value of $$ to a zeroed-out value. Since the default
492 37803 value is undefined, this behavior is technically correct. */
493
2/6
✓ Branch 0 taken 37803 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 37803 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
37803 static YYSTYPE yyval_default;
494 static YYLTYPE yyloc_default
495 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
496 76632 = { 1, 1, 1, 1 }
497
2/6
✓ Branch 0 taken 76632 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 76632 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
76632 # endif
498 ;
499
500
501
502 #include <stddef.h>
503 #include <stdint.h>
504 #include <stdio.h>
505 #include <stdlib.h>
506 #include <string.h>
507
508 #ifdef short
509 1965 # undef short
510
3/8
✓ Branch 0 taken 1965 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1965 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1965 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1965 #endif
511
512 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
513 <limits.h> and (if available) <stdint.h> are included
514 so that the code can choose integer types of a good width. */
515
516 #ifndef __PTRDIFF_MAX__
517 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
518 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
519 4467 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
520 4467 # define YY_STDINT_H
521
3/8
✓ Branch 0 taken 4467 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4467 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4467 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4467 # endif
522 #endif
523
524 /* Narrow types that promote to a signed type and that can represent a
525 signed or unsigned integer of at least N bits. In tables they can
526 save space and decrease cache pressure. Promoting to a signed type
527 helps avoid bugs in integer arithmetic. */
528
529 #ifdef __INT_LEAST8_MAX__
530 typedef __INT_LEAST8_TYPE__ yytype_int8;
531 #elif defined YY_STDINT_H
532 typedef int_least8_t yytype_int8;
533 #else
534 typedef signed char yytype_int8;
535 #endif
536
537 #ifdef __INT_LEAST16_MAX__
538 typedef __INT_LEAST16_TYPE__ yytype_int16;
539 #elif defined YY_STDINT_H
540 typedef int_least16_t yytype_int16;
541 #else
542 typedef short yytype_int16;
543 #endif
544
545 /* Work around bug in HP-UX 11.23, which defines these macros
546 incorrectly for preprocessor constants. This workaround can likely
547 be removed in 2023, as HPE has promised support for HP-UX 11.23
548 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
549 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
550
3/8
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4 #ifdef __hpux
551 # undef UINT_LEAST8_MAX
552 # undef UINT_LEAST16_MAX
553
3/8
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
18 # define UINT_LEAST8_MAX 255
554 # define UINT_LEAST16_MAX 65535
555 #endif
556
557 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
558 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
559 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
560 145493 && UINT_LEAST8_MAX <= INT_MAX)
561 typedef uint_least8_t yytype_uint8;
562 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
563 typedef unsigned char yytype_uint8;
564 145493 #else
565 145493 typedef short yytype_uint8;
566
4/10
✓ Branch 0 taken 145493 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 145493 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 145493 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 145493 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
145493 #endif
567
568 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
569 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
570 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
571 && UINT_LEAST16_MAX <= INT_MAX)
572 409695 typedef uint_least16_t yytype_uint16;
573 409695 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
574 409695 typedef unsigned short yytype_uint16;
575 #else
576 36782185 typedef int yytype_uint16;
577 #endif
578 #ifndef YYPTRDIFF_T
579 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
580 # define YYPTRDIFF_T __PTRDIFF_TYPE__
581 2073939 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
582 2073939 # elif defined PTRDIFF_MAX
583 2073939 # ifndef ptrdiff_t
584 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
585 34708246 # endif
586 # define YYPTRDIFF_T ptrdiff_t
587 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
588 # else
589 # define YYPTRDIFF_T long
590
2/6
✓ Branch 0 taken 30 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 30 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
30 # define YYPTRDIFF_MAXIMUM LONG_MAX
591
2/6
✓ Branch 0 taken 725832 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 725832 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
725832 # endif
592
2/6
✓ Branch 0 taken 220893 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 220893 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
220893 #endif
593
2/6
✓ Branch 0 taken 1249436 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1249436 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1249436
594
2/6
✓ Branch 0 taken 8870984 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8870984 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8870984 #ifndef YYSIZE_T
595
2/6
✓ Branch 0 taken 1122945 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1122945 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1122945 # ifdef __SIZE_TYPE__
596
2/6
✓ Branch 0 taken 60430 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60430 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
60430 # define YYSIZE_T __SIZE_TYPE__
597
2/6
✓ Branch 0 taken 9990 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9990 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
9990 # elif defined size_t
598 # define YYSIZE_T size_t
599 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
600 24521645 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
601 24521645 # define YYSIZE_T size_t
602
1/4
✓ Branch 0 taken 24521645 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
49043290 # else
603 # define YYSIZE_T unsigned
604 # endif
605 #endif
606
607 #define YYSIZE_MAXIMUM \
608 YY_CAST (YYPTRDIFF_T, \
609 2496 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
610 2496 ? YYPTRDIFF_MAXIMUM \
611
3/8
✓ Branch 0 taken 2496 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2496 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2496 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2496 : YY_CAST (YYSIZE_T, -1)))
612
613 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
614
615
616 #ifndef YY_
617 # if defined YYENABLE_NLS && YYENABLE_NLS
618 # if ENABLE_NLS
619 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
620 1192256 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
621
1/2
✓ Branch 0 taken 1192256 times.
✗ Branch 1 not taken.
1192256 # endif
622 # endif
623 1192256 # ifndef YY_
624 1192256 # define YY_(Msgid) Msgid
625 # endif
626 27658718 #endif
627 27658718
628 27658718
629
2/2
✓ Branch 0 taken 26052306 times.
✓ Branch 1 taken 1606412 times.
27658718 #ifndef YYFREE
630 1606412 # define YYFREE free
631 27658718 #endif
632 27658718 #ifndef YYMALLOC
633 # define YYMALLOC malloc
634 #endif
635 #ifndef YYREALLOC
636 # define YYREALLOC realloc
637 2875 #endif
638 2875
639 2875 #ifdef __cplusplus
640 2875 typedef bool yybool;
641 2875 # define yytrue true
642 # define yyfalse false
643 27658718 #else
644
2/6
✓ Branch 0 taken 27658718 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 27658718 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
27658718 /* When we move to stdbool, get rid of the various casts to yybool. */
645 typedef signed char yybool;
646
2/2
✓ Branch 0 taken 26234773 times.
✓ Branch 1 taken 1423945 times.
27658718 # define yytrue 1
647 1423945 # define yyfalse 0
648 #endif
649
650 #ifndef YYSETJMP
651 # include <setjmp.h>
652 # define YYJMP_BUF jmp_buf
653 27859605 # define YYSETJMP(Env) setjmp (Env)
654 27859605 /* Pacify Clang and ICC. */
655 27859605 # define YYLONGJMP(Env, Val) \
656 27859605 do { \
657 27859605 longjmp (Env, Val); \
658 14257416 YY_ASSERT (0); \
659 } while (yyfalse)
660 #endif
661
662 #ifndef YY_ATTRIBUTE_PURE
663 349075 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
664 349075 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
665 349075 # else
666 349075 # define YY_ATTRIBUTE_PURE
667 349075 # endif
668 #endif
669 42117021
670
2/6
✓ Branch 0 taken 42117021 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 42117021 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
42117021 #ifndef YY_ATTRIBUTE_UNUSED
671 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
672
2/4
✓ Branch 0 taken 42117021 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 42117021 times.
✗ Branch 3 not taken.
42117021 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
673 # else
674 # define YY_ATTRIBUTE_UNUSED
675
2/2
✓ Branch 0 taken 16438403 times.
✓ Branch 1 taken 25678618 times.
42117021 # endif
676 #endif
677
678 /* The _Noreturn keyword of C11. */
679 #ifndef _Noreturn
680 # if (defined __cplusplus \
681 && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
682 5 || (defined _MSC_VER && 1900 <= _MSC_VER)))
683 5 # define _Noreturn [[noreturn]]
684
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 # elif ((!defined __cplusplus || defined __clang__) \
685 && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
686 || (!defined __STRICT_ANSI__ \
687 && (4 < __GNUC__ + (7 <= __GNUC_MINOR__) \
688 || (defined __apple_build_version__ \
689 ? 6000000 <= __apple_build_version__ \
690 : 3 < __clang_major__ + (5 <= __clang_minor__))))))
691 /* _Noreturn works as-is. */
692 # elif (2 < __GNUC__ + (8 <= __GNUC_MINOR__) || defined __clang__ \
693 || 0x5110 <= __SUNPRO_C)
694 # define _Noreturn __attribute__ ((__noreturn__))
695 50178 # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
696 50178 # define _Noreturn __declspec (noreturn)
697 50178 # else
698
2/6
✓ Branch 0 taken 298897 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 298897 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
298897 # define _Noreturn
699 # endif
700 #endif
701
702 /* Suppress unused-variable warnings by "using" E. */
703 #if ! defined lint || defined __GNUC__
704 # define YY_USE(E) ((void) (E))
705 #else
706 # define YY_USE(E) /* empty */
707 #endif
708
709 50178 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
710
2/6
✓ Branch 0 taken 50178 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 50178 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
50178 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
711 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
712 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
713 _Pragma ("GCC diagnostic push") \
714 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
715 # else
716 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
717 _Pragma ("GCC diagnostic push") \
718 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
719 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
720 # endif
721 14976 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
722
1/2
✓ Branch 0 taken 14976 times.
✗ Branch 1 not taken.
14976 _Pragma ("GCC diagnostic pop")
723 #else
724 # define YY_INITIAL_VALUE(Value) Value
725 #endif
726 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
727 14976 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
728 14976 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
729 #endif
730 #ifndef YY_INITIAL_VALUE
731 # define YY_INITIAL_VALUE(Value) /* Nothing. */
732 #endif
733
734 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
735 # define YY_IGNORE_USELESS_CAST_BEGIN \
736 _Pragma ("GCC diagnostic push") \
737 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
738 # define YY_IGNORE_USELESS_CAST_END \
739 _Pragma ("GCC diagnostic pop")
740 #endif
741 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
742 # define YY_IGNORE_USELESS_CAST_BEGIN
743 # define YY_IGNORE_USELESS_CAST_END
744 #endif
745
746
747 #define YY_ASSERT(E) ((void) (0 && (E)))
748
749 /* YYFINAL -- State number of the termination state. */
750 #define YYFINAL 3
751 /* YYLAST -- Last index in YYTABLE. */
752 #define YYLAST 2934
753
754 /* YYNTOKENS -- Number of terminals. */
755 #define YYNTOKENS 131
756 /* YYNNTS -- Number of nonterminals. */
757 #define YYNNTS 120
758 /* YYNRULES -- Number of rules. */
759 580736 #define YYNRULES 382
760
1/2
✓ Branch 0 taken 580736 times.
✗ Branch 1 not taken.
580736 /* YYNSTATES -- Number of states. */
761 #define YYNSTATES 743
762 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
763 #define YYMAXRHS 11
764 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
765
1/2
✓ Branch 0 taken 580736 times.
✗ Branch 1 not taken.
580736 accessed by $0, $-1, etc., in any rule. */
766 #define YYMAXLEFT 0
767
768 /* YYMAXUTOK -- Last valid token kind. */
769 #define YYMAXUTOK 385
770 580736
771 580736 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
772 580736 as returned by yylex, with out-of-bounds checking. */
773 #define YYTRANSLATE(YYX) \
774 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
775 2800859 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
776 2800859 : YYSYMBOL_YYUNDEF)
777
2/2
✓ Branch 0 taken 2666681 times.
✓ Branch 1 taken 134178 times.
2800859
778 134178 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
779 2800859 as returned by yylex. */
780 2800859 static const yytype_uint8 yytranslate[] =
781 {
782 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
786 2220136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
787 2220136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
788 2220136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
790 620672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
791 620672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
792
4/18
✓ Branch 0 taken 620672 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 620672 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 620672 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 620672 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
1241344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
795 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
796 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
797 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
798 1 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
800 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
803 2810317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
804 2810317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
805 2810317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
806 2810317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
807 2810317 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
808 2810317 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
809 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
810 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
811 30545 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
812 30545 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
813 30545 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
814 30545 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
815 30545 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
816
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 30545 times.
30545 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
817 30545 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
818 30545 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
819 30545 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
820 125, 126, 127, 128, 129, 130
821 };
822
823 #if YYDEBUG
824
2/6
✓ Branch 0 taken 30545 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 30545 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
30545 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
825 static const yytype_int16 yyrline[] =
826 {
827 0, 305, 305, 311, 314, 319, 323, 324, 325, 326,
828 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
829 1878 337, 345, 346, 352, 372, 425, 431, 442, 447, 455,
830 1878 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
831 1878 466, 476, 482, 491, 495, 499, 508, 518, 524, 529,
832 1878 534, 537, 540, 549, 552, 560, 563, 571, 576, 580,
833 1878 585, 590, 591, 592, 593, 594, 595, 596, 597, 599,
834 608, 619, 625, 636, 642, 652, 658, 662, 668, 681,
835 694, 698, 702, 708, 719, 730, 746, 757, 774, 784,
836 789, 794, 801, 809, 823, 828, 836, 842, 847, 848,
837 3350232 849, 853, 863, 871, 881, 890, 893, 904, 905, 909,
838 3350232 915, 925, 930, 941, 946, 951, 956, 970, 980, 993,
839 3350232 1007, 1011, 1012, 1016, 1017, 1018, 1019, 1020, 1031, 1231,
840 3350232 1244, 1251, 1252, 1256, 1262, 1272, 1277, 1285, 1286, 1287,
841 3350232 1288, 1289, 1290, 1291, 1299, 1303, 1310, 1315, 1320, 1325,
842 1331, 1337, 1347, 1364, 1365, 1366, 1367, 1369, 1370, 1371,
843 2309559 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1385,
844
2/6
✓ Branch 0 taken 2309559 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2309559 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2309559 1386, 1391, 1392, 1393, 1398, 1399, 1400, 1402, 1403, 1404,
845 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1417, 1418,
846 1423, 1424, 1428, 1429, 1433, 1438, 1445, 1450, 1458, 1459,
847 238022 1467, 1471, 1476, 1480, 1488, 1495, 1502, 1512, 1517, 1521,
848 939 1526, 1533, 1538, 1543, 1550, 1557, 1558, 1562, 1567, 1575,
849
2/6
✓ Branch 0 taken 292342 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 292342 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
292342 1587, 1603, 1612, 1625, 1649, 1653, 1654, 1658, 1666, 1673,
850 1677, 1686, 1695, 1703, 1712, 1721, 1732, 1733, 1737, 1741,
851 1746, 1752, 1762, 1766, 1771, 1777, 1787, 1794, 1797, 1801,
852 1809, 1826, 1829, 1830, 1837, 1846, 1851, 1903, 1908, 1909,
853 1910, 1911, 1915, 1916, 1925, 1933, 1941, 1949, 1960, 1968,
854 6170402 1976, 1983, 1991, 2002, 2011, 2015, 2016, 2020, 2027, 2034,
855 6170402 2040, 2049, 2055, 2067, 2068, 2069, 2071, 2081, 2089, 2095,
856
2/6
✓ Branch 0 taken 6170402 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6170402 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6170402 2097, 2099, 2101, 2103, 2106, 2109, 2111, 2113, 2115, 2117,
857 2119, 2122, 2124, 2127, 2129, 2131, 2133, 2136, 2138, 2140,
858 2143, 2145, 2147, 2150, 2152, 2154, 2156, 2158, 2161, 2163,
859 2165, 2167, 2169, 2172, 2174, 2177, 2179, 2182, 2184, 2187,
860 2189, 2192, 2194, 2197, 2199, 2208, 2209, 2216, 2218, 2220,
861 2225, 2230, 2235, 2240, 2245, 2250, 2255, 2261, 2267, 2272,
862 2277, 2282, 2288, 2291, 2298, 2304, 2315, 2320, 2325, 2330,
863 2335, 2340, 2345, 2350, 2355, 2365, 2368, 2371, 2375, 2376,
864 271647 2377, 2378, 2382, 2389, 2395, 2399, 2408, 2409, 2414, 2426,
865 271647 2437, 2444, 2449
866 271647 };
867 271647 #endif
868 271647
869 271647 #define YYPACT_NINF (-608)
870 271647 #define YYTABLE_NINF (-354)
871
872 238022 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
873 238022 STATE-NUM. */
874
2/6
✓ Branch 0 taken 238022 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 238022 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
238022 static const yytype_int16 yypact[] =
875 {
876 -608, 96, 1783, -608, 95, 40, 58, 359, 700, 83,
877 55, -3, 145, 148, 744, 1113, 744, 744, 123, -608,
878 -608, -608, -608, -608, -608, -608, -608, -608, 66, 17,
879 213, -608, -608, 176, 228, -608, -608, -608, 233, 243,
880 -608, 12, -608, -608, 272, 289, -608, -608, -608, -608,
881 309, 7, -608, 298, -608, 149, -608, 157, 205, 240,
882
2/6
✓ Branch 0 taken 939 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 939 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
939 315, -608, 248, -608, 271, -608, -608, -608, -7, 2508,
883 149, 700, 332, 335, 346, 346, -3, 384, 744, 12,
884 -608, -608, -608, -608, -608, 2508, 355, 291, 303, 358,
885 29, -608, -608, -608, -608, -608, 383, -608, 23, -608,
886 182, 103, 179, -608, -608, 312, 320, -608, -608, -608,
887 -608, -608, 149, 149, 149, 149, 149, 149, 149, 149,
888 316, 2632, -608, -608, -608, -608, 381, 385, -3, 2508,
889 2508, 2508, 2538, 2538, 2538, 2538, 2538, 700, -608, -608,
890 39121 -608, -608, 386, 387, -608, -608, -608, 388, 253, -608,
891 370, 302, 168, 229, 266, 118, 357, 363, 361, 364,
892 80, -608, 783, -608, -608, 391, -608, 326, -608, -608,
893 -608, -608, 46, -608, 265, 149, 1887, -608, -3, 190,
894 39120 3, -608, -608, 2508, 891, 1954, 149, -608, 2508, 2508,
895 39120 -608, -608, 443, 1185, -608, 541, 149, 392, -608, -608,
896 39120 -608, -608, -608, -608, -608, -608, -608, -608, 398, 1239,
897 39120 -608, -3, 338, 403, -608, 407, 411, -608, -608, -608,
898 39120 2667, -608, -608, 412, -608, 47, 416, 103, 347, 345,
899
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 39120 times.
39120 418, -608, 420, -608, 49, -608, -608, -608, -608, -608,
900 39120 107, 2283, 2508, 356, -608, -608, 2538, 2538, 2538, 2538,
901 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538,
902 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2538, 2508, 2508,
903 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508, 2508,
904 39115 2508, 2508, 1832, -608, 30, -608, -608, 149, 46, 424,
905
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 -608, -608, 1936, -608, 444, -608, 446, 447, 448, 449,
906 -608, -608, -608, -608, 450, -608, 369, -608, -608, 250,
907 438, 453, 15, 456, 394, 395, 396, 397, 400, 401,
908 -608, 177, -608, -608, 2508, 451, 455, 466, 467, 2508,
909 468, 0, 9, 1563, 470, 471, 466, 472, 440, -608,
910 1666600 1185, -608, 477, -608, 478, 479, 10, 481, 54, -608,
911 1666600 -608, 1311, -608, -608, -608, -608, -608, -608, -608, -608,
912 1666600 -608, 497, -608, -608, -608, 482, 483, 484, 32, -608,
913 1666600 485, 700, 10, 489, 72, -608, -608, 43, -608, 1626,
914 1666600 -608, 2508, -608, -608, -608, -608, -608, -608, -608, -608,
915 -608, -608, -608, -608, 490, 493, 2303, -608, 2379, -608,
916 2508, 339, -608, 195, -608, 491, -608, -608, 370, 370,
917 370, 302, 302, 168, 168, 229, 229, 229, 229, 266,
918 266, 266, 266, 118, 357, 363, 361, 488, 364, -608,
919 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
920 -608, -608, -608, 360, -608, -608, -608, 46, -608, 2508,
921 -608, -608, -608, -608, -608, -608, -608, -608, -608, 34,
922 495, 496, -608, -608, -608, 414, -608, -608, -608, -608,
923 -608, -608, 2508, -608, 502, 1689, 2044, 2108, -608, 2508,
924 -608, 2508, -608, 503, -608, 505, 81, -608, 2508, 2508,
925 -608, 2508, 509, -608, -608, -608, -608, -608, -608, -608,
926 840 -608, 1563, -608, -608, -608, -608, -608, -608, -608, 541,
927 840 2508, 149, 507, 510, -608, 513, -608, 515, 516, 518,
928 840 -608, 2722, -608, 519, 517, -608, -608, -608, 210, -608,
929 840 512, -608, -608, 2508, -608, -608, 2538, -608, 520, -608,
930 -608, -608, 522, -608, -608, 465, 476, -608, -608, 521,
931 4 -608, -608, -608, -608, -608, -608, -608, -608, -608, -608,
932 4 327, -608, 2508, 1563, 2508, 327, 31, 251, 211, 10,
933
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 523, 525, 536, 548, -608, -608, 550, 551, 554, 555,
934 556, -608, -608, 526, -608, 541, 2508, -608, -608, -608,
935 -608, -608, -608, -608, -608, 2757, -608, 528, -608, -608,
936 1005, -608, -608, -608, 2508, -608, -608, 2508, 219, -608,
937 566, 2415, 327, 2508, 2508, 2508, 2508, 2508, 2508, 1563,
938 486, 1563, 1563, 561, 1563, 2508, 2508, 1689, 1563, 1563,
939 4 700, 571, 572, -608, 574, -608, 580, 576, 2508, 2508,
940 4 222, 2415, -608, -608, -608, -608, -608, 579, -608, 2508,
941 631, 634, 415, 635, 588, 590, -608, 642, -608, 560,
942
2/6
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10 -608, -608, 2810, 2457, 1689, 1563, 273, 280, 2508, 1563,
943 258, 1563, -608, 1563, 1563, 2184, 596, 94, 1057, 1563,
944 645, 647, 1563, -608, -608, 49, -608, 270, 649, -608,
945 -608, -608, -608, 599, -608, 2508, 1563, -608, -608, -608,
946 605, 251, 617, 619, -608, -608, -608, 1057, 2207, 622,
947 1437, -608, 1563, 1563, -608, -608, 1689, 1563, 1563, 1563,
948 623, -608, -608, -608, -608, 1437, 625, 628, 632, -608,
949 -608, -608, -608, 679, -608, -608, 1563, -608, -608, -608,
950 1563, -608, -608
951 };
952
2/6
✓ Branch 0 taken 39106 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39106 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39106
953 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
954 Performed when YYTABLE does not specify something else to do. Zero
955 means the default is an error. */
956 static const yytype_int16 yydefact[] =
957 {
958 5, 0, 2, 1, 0, 0, 0, 0, 0, 0,
959 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
960 62, 63, 64, 65, 66, 67, 68, 257, 0, 0,
961 274, 3, 8, 0, 0, 6, 7, 4, 0, 0,
962 55, 0, 58, 60, 0, 0, 12, 15, 14, 13,
963 0, 0, 145, 0, 251, 0, 69, 258, 259, 260,
964 261, 273, 0, 105, 0, 43, 274, 59, 0, 0,
965 0, 0, 0, 0, 262, 263, 0, 0, 0, 0,
966 86, 71, 87, 85, 84, 0, 0, 0, 0, 0,
967 0, 17, 18, 19, 9, 57, 72, 74, 76, 88,
968 0, 0, 78, 10, 11, 0, 0, 130, 128, 250,
969 16, 270, 0, 0, 0, 0, 0, 0, 0, 0,
970 0, 0, 106, 56, 376, 377, 0, 0, 0, 0,
971 39936 0, 0, 0, 0, 0, 0, 0, 0, 374, 367,
972
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 39936 times.
39936 365, 366, 283, 0, 292, 286, 289, 294, 295, 301,
973 303, 307, 310, 313, 318, 323, 325, 327, 329, 331,
974 333, 335, 337, 352, 354, 0, 284, 375, 368, 369,
975 370, 256, 0, 78, 0, 0, 0, 41, 0, 0,
976 0, 44, 46, 0, 0, 0, 0, 81, 0, 0,
977 39936 77, 90, 0, 0, 89, 100, 0, 0, 144, 264,
978 39936 266, 265, 268, 271, 267, 272, 269, 70, 0, 0,
979 39936 108, 0, 0, 0, 114, 0, 0, 120, 122, 118,
980 0, 115, 116, 0, 113, 0, 0, 69, 0, 0,
981 39946 0, 336, 0, 382, 0, 296, 297, 299, 300, 298,
982
2/6
✓ Branch 0 taken 39946 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39946 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
39946 0, 0, 0, 0, 290, 291, 0, 0, 0, 0,
983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
985
1/2
✓ Branch 0 taken 39946 times.
✗ Branch 1 not taken.
39946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
986 0, 0, 0, 373, 0, 22, 252, 0, 0, 0,
987 23, 29, 0, 27, 0, 28, 0, 0, 0, 0,
988 33, 36, 35, 34, 0, 42, 0, 53, 151, 0,
989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
990 73, 0, 83, 75, 0, 0, 0, 0, 0, 248,
991 0, 0, 0, 0, 0, 0, 0, 0, 0, 171,
992 0, 193, 0, 197, 0, 0, 0, 0, 0, 196,
993 158, 0, 159, 160, 161, 215, 216, 162, 224, 225,
994 4 226, 229, 163, 164, 165, 0, 0, 0, 283, 353,
995
2/6
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
4 0, 0, 0, 0, 97, 98, 99, 0, 94, 0,
996 129, 0, 117, 119, 125, 126, 123, 107, 110, 111,
997 112, 109, 121, 124, 0, 0, 0, 285, 0, 380,
998
1/2
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
4 0, 0, 279, 0, 282, 0, 288, 302, 304, 305,
999 306, 308, 309, 311, 312, 315, 314, 317, 316, 319,
1000 320, 322, 321, 324, 326, 328, 330, 0, 332, 338,
1001 339, 340, 341, 342, 343, 344, 345, 346, 348, 349,
1002 350, 351, 347, 0, 20, 21, 255, 0, 254, 0,
1003 24, 25, 26, 38, 39, 30, 31, 32, 37, 0,
1004 0, 0, 147, 148, 146, 0, 52, 51, 50, 49,
1005 48, 47, 0, 80, 0, 190, 0, 0, 198, 0,
1006 247, 0, 167, 0, 169, 0, 0, 152, 0, 0,
1007 1182366 199, 0, 382, 156, 173, 154, 153, 223, 192, 195,
1008 194, 0, 166, 172, 155, 157, 104, 101, 92, 100,
1009 0, 0, 0, 0, 132, 0, 136, 0, 0, 0,
1010 138, 0, 135, 0, 0, 371, 372, 277, 0, 381,
1011 1182366 0, 283, 287, 0, 280, 293, 0, 253, 0, 54,
1012 149, 150, 0, 82, 91, 186, 188, 175, 174, 0,
1013 484244 178, 179, 180, 181, 182, 183, 184, 185, 191, 176,
1014 484244 273, 177, 0, 0, 0, 274, 0, 0, 0, 0,
1015 484244 0, 0, 0, 0, 168, 170, 0, 0, 0, 0,
1016 0, 228, 96, 103, 95, 100, 0, 141, 142, 139,
1017 137, 131, 134, 133, 140, 0, 278, 0, 281, 334,
1018 0, 45, 187, 189, 0, 236, 237, 0, 0, 227,
1019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0, 0, 190, 0, 0,
1021 0, 0, 0, 127, 0, 40, 0, 0, 0, 0,
1022 0, 0, 356, 358, 359, 357, 360, 0, 235, 0,
1023 200, 202, 0, 238, 0, 0, 249, 240, 246, 0,
1024 102, 93, 0, 0, 190, 0, 0, 0, 0, 0,
1025 0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
1026 242, 244, 0, 143, 379, 0, 218, 0, 221, 364,
1027 363, 362, 361, 0, 234, 0, 0, 232, 201, 203,
1028 0, 354, 0, 0, 355, 214, 204, 0, 0, 0,
1029 206, 239, 0, 0, 241, 378, 190, 0, 0, 0,
1030 0, 233, 213, 211, 212, 205, 0, 0, 0, 208,
1031 243, 245, 217, 219, 222, 231, 0, 210, 207, 209,
1032 38 0, 230, 220
1033 38 };
1034
1/2
✓ Branch 0 taken 38 times.
✗ Branch 1 not taken.
38
1035 /* YYPGOTO[NTERM-NUM]. */
1036 static const yytype_int16 yypgoto[] =
1037 {
1038 -608, -608, -608, 408, -232, 18, -608, -282, 45, -608,
1039 -608, -608, -1, 59, 6, -608, 135, -608, 682, 19,
1040 2, -608, -38, -608, -608, -608, -608, 41, -13, -608,
1041 -608, -463, -344, 63, -608, -608, 20, -608, -608, -49,
1042 475, -608, -209, 22, 14, 636, -608, -608, -492, 79,
1043 593, 191, -167, -586, -93, -607, -450, 365, -441, -608,
1044 35, -440, -608, -608, -608, -439, 348, -608, -608, -608,
1045 -501, -433, -431, -608, -424, -407, 21, -33, -143, 193,
1046 -2, -31, -608, 26, -608, 27, 656, -608, -608, 304,
1047 -608, 305, -608, -608, -47, 174, 178, 180, 110, 129,
1048 442, 462, 463, 464, 461, -608, -247, 584, 1124, 362,
1049 -400, -76, 24, -446, -608, -149, -608, -608, -608, 68
1050 };
1051
1052 /* YYDEFGOTO[NTERM-NUM]. */
1053 static const yytype_int16 yydefgoto[] =
1054 {
1055 0, 1, 2, 31, 286, 291, 292, 293, 342, 34,
1056 35, 36, 343, 344, 345, 40, 346, 42, 43, 298,
1057 347, 96, 171, 98, 570, 190, 321, 82, 219, 100,
1058 377, 373, 374, 375, 376, 64, 301, 122, 220, 221,
1059 222, 223, 224, 302, 303, 50, 380, 521, 522, 348,
1060 52, 486, 487, 549, 350, 351, 352, 478, 353, 677,
1061 678, 354, 687, 355, 356, 357, 358, 359, 360, 361,
1062 607, 362, 363, 364, 365, 366, 367, 54, 172, 55,
1063 142, 73, 57, 58, 59, 60, 61, 143, 144, 403,
1064 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1065 155, 156, 157, 158, 159, 160, 161, 162, 163, 369,
1066 370, 165, 703, 704, 166, 167, 168, 169, 170, 234
1067 };
1068
1069 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1070 positive, shift that token. If negative, reduce the rule whose
1071 number is the opposite. If YYTABLE_NINF, syntax error. */
1072 static const yytype_int16 yytable[] =
1073 {
1074 56, 37, 399, 97, 45, 56, 56, 194, 39, 179,
1075 451, 391, 56, 56, 56, 56, 49, 81, 109, 427,
1076 32, 44, 47, 53, 48, 551, 349, 506, 99, 593,
1077 568, 312, 288, 10, 552, 553, 554, 74, 75, 101,
1078 184, 656, 555, 46, 556, 177, 582, 33, 87, 88,
1079 89, 557, 27, 95, 482, 80, 448, 83, 84, 106,
1080 326, 38, 308, 484, 611, 108, 99, 27, 558, 56,
1081 95, 710, 95, 10, 464, 561, 56, 101, 686, 309,
1082 10, 51, 111, 187, 188, 235, 236, 237, 238, 239,
1083 -276, 95, -69, 539, 445, 511, 3, 576, 284, 106,
1084 725, 398, 74, 75, 675, 676, 106, 313, 316, 319,
1085 285, 641, 322, 285, 189, 577, 62, 123, 70, 227,
1086 214, 66, 631, 217, 509, 512, 230, 216, 138, 483,
1087 732, 107, 310, 311, 66, 56, 66, 41, 485, 90,
1088 283, 69, 226, 68, 447, 266, 71, 305, 320, 79,
1089 41, 79, 79, 185, 66, 612, -69, 459, 706, 283,
1090 382, 195, 218, 510, 63, 640, 213, 95, 400, 267,
1091 683, 389, 76, 349, 56, 295, 77, 551, 299, 72,
1092 215, 85, 297, 196, 500, 65, 552, 553, 554, 401,
1093 86, 368, 109, 56, 555, 670, 556, 304, 383, 407,
1094 225, 258, 259, 557, 74, 75, 174, 227, 260, 101,
1095 112, 81, 27, 79, 551, 537, -130, 300, 227, 388,
1096 558, 294, 217, 552, 553, 554, 216, 561, 261, 472,
1097 91, 555, -273, 556, -273, 296, 191, -273, 192, 473,
1098 557, 226, 306, 250, 251, 193, 446, 533, 474, 307,
1099 113, 115, 117, 119, 534, 51, 41, 558, 114, -273,
1100 27, 218, 533, 618, 561, 213, 551, 115, 119, 596,
1101 619, 638, 240, 66, 668, 552, 553, 554, 397, 215,
1102 56, 669, 92, 555, 45, 556, 659, 93, 39, 599,
1103 56, 452, 557, 116, 299, 27, 49, 94, 297, 225,
1104 32, 44, 47, 53, 48, 524, 252, 253, 97, 558,
1105 695, 41, 105, 304, 242, 109, 561, 696, 635, 243,
1106 244, 245, 716, 46, 530, 95, 103, 33, 287, 717,
1107 372, 368, 689, 300, 121, 690, 56, 294, 368, 691,
1108 81, 38, 692, 104, 41, 254, 255, 256, 257, 368,
1109 499, 296, 110, 124, 125, 41, 613, 614, 615, 616,
1110 617, 51, 126, 127, 415, 416, 417, 418, 118, 56,
1111 27, 51, 107, 538, 247, 248, 249, 56, 516, 460,
1112 461, 519, 550, 605, 606, 518, 633, 419, 420, 421,
1113 422, 87, 88, 89, 27, 175, 543, 130, 176, 531,
1114 523, 27, 131, 19, 20, 21, 22, 23, 24, 25,
1115 26, 178, 578, 180, 27, 580, 183, 41, 181, 137,
1116 520, 408, 409, 410, 515, 675, 676, 41, 411, 412,
1117 182, 164, 413, 414, 583, 186, 197, 28, 517, 228,
1118 207, 246, 262, 229, -276, 241, -275, 164, 264, 263,
1119 282, 283, 265, 715, 324, 379, 381, 384, 225, 7,
1120 90, 385, 658, 66, 138, 386, 392, 139, 140, 141,
1121 393, 394, 395, 368, 368, 368, 396, 548, 338, 397,
1122 406, 547, 449, 66, 19, 20, 21, 22, 23, 24,
1123 25, 26, 232, 233, 138, 27, 559, 462, 453, 368,
1124 454, 455, 456, 457, 458, 501, 372, 56, 465, 475,
1125 632, 349, 463, 476, 41, 466, 467, 468, 469, 56,
1126 592, 470, 471, 519, 477, 479, 481, 518, 488, 489,
1127 491, 493, 494, 495, 550, 496, 502, 503, 504, 505,
1128 349, 542, 523, 500, 536, 164, 164, 164, 508, 525,
1129 164, 323, 526, 535, 540, 541, 544, 574, 500, 575,
1130 7, 368, 520, -353, 66, 585, 515, 587, 586, 588,
1131 589, 550, 590, 594, 597, 604, 595, 649, 630, 600,
1132 517, 601, 621, 56, 622, 19, 20, 21, 22, 23,
1133 24, 25, 26, 56, 602, 623, 27, 217, 56, 702,
1134 225, 216, 299, 404, 405, 603, 297, 624, 625, 626,
1135 634, 566, 569, 627, 628, 629, 226, 368, 639, 368,
1136 368, 304, 368, 550, 652, 368, 368, 368, 56, 548,
1137 661, 662, 727, 547, 664, 665, 218, 663, 671, 673,
1138 213, 300, 674, 679, 372, 294, 371, 680, 559, 681,
1139 682, 510, 705, 712, 215, 713, 41, 718, 719, 296,
1140 56, 722, 368, 368, 519, 66, 548, 368, 518, 368,
1141 547, 368, 368, 723, 225, 724, 368, 368, 729, 51,
1142 368, 737, 736, 523, 738, 559, 164, 740, 739, 67,
1143 444, 480, 581, 660, 368, 390, 497, 102, 120, 198,
1144 528, 490, 492, 520, 423, 368, 532, 515, 368, 499,
1145 368, 368, 707, 231, 368, 368, 368, 368, 548, 7,
1146 372, 517, 547, 368, 499, 424, 173, 425, 428, 426,
1147 41, 685, 728, 0, 368, 41, 0, 559, 368, 0,
1148 0, 225, 0, 164, 19, 20, 21, 22, 23, 24,
1149 25, 26, 0, 0, 609, 27, 0, 0, 404, 0,
1150 529, 0, 164, 7, 0, 372, 0, 0, 199, 200,
1151 201, 202, 203, 204, 205, 206, 0, 0, 0, 0,
1152 0, 14, 78, 16, 17, 0, 0, 0, 19, 20,
1153 21, 22, 23, 24, 25, 26, 0, 41, 0, 27,
1154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1155 648, 164, 650, 651, 0, 653, 0, 0, 0, 657,
1156 0, 0, 0, 0, 66, 0, 0, 0, 0, 0,
1157 0, 173, 0, 0, 164, 0, 0, 0, 567, 571,
1158 0, 572, 173, 573, 0, 0, 0, 0, 0, 0,
1159 164, 579, 378, 164, 0, 0, 688, 0, 0, 0,
1160 694, 0, 697, 0, 698, 699, 0, 0, 66, 0,
1161 711, 0, 164, 714, 268, 269, 270, 271, 272, 273,
1162 274, 275, 276, 277, 278, 279, 280, 721, 0, 0,
1163 0, 0, 0, 0, 0, 598, 281, 0, 0, 0,
1164 0, 0, 314, 730, 731, 124, 125, 0, 733, 734,
1165 735, 0, 0, 0, 126, 127, 0, 0, 0, 0,
1166 0, 0, 0, 0, 608, 0, 610, 741, 0, 0,
1167 0, 742, 128, 129, 0, 0, 0, 0, 0, 0,
1168 173, 0, 0, 173, 0, 0, 27, 0, 164, 130,
1169 0, 0, 0, 0, 131, 0, 0, 0, 132, 133,
1170 134, 135, 0, 0, 0, 0, 636, 136, 0, 637,
1171 0, 137, 0, 567, 0, 642, 643, 644, 645, 646,
1172 647, 0, 0, 0, 0, 0, 0, 654, 655, 0,
1173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1174 666, 667, 173, 567, 0, 0, 0, 0, 4, 5,
1175 0, 672, 0, 0, 315, 66, 138, 0, 0, 139,
1176 140, 141, 0, 0, 7, 233, 8, 289, 507, 0,
1177 693, 10, 11, 12, 0, 0, 0, 701, 0, 0,
1178 0, 0, 14, 15, 16, 17, 0, 0, 18, 19,
1179 20, 21, 22, 23, 24, 25, 26, 720, 0, 0,
1180 27, 0, 325, 326, 327, 0, 328, 708, 709, 329,
1181 701, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1182 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1183 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1184 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1185 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1186 340, 0, 28, 0, 132, 133, 134, 135, 0, 30,
1187 0, 560, 7, 136, 0, 0, 0, 137, 0, 0,
1188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1189 14, 15, 16, 17, 0, 0, 0, 19, 20, 21,
1190 22, 23, 24, 25, 26, 0, 0, 584, 27, 0,
1191 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1192 0, 66, 138, 0, 0, 139, 140, 141, 0, 0,
1193 325, 326, 327, 0, 328, 0, 0, 329, 0, 124,
1194 125, 330, 331, 332, 7, 333, 8, 334, 126, 127,
1195 0, 10, 0, 12, 0, 0, 0, 0, 0, 335,
1196 336, 337, 0, 338, 0, 620, 128, 129, 18, 19,
1197 20, 21, 22, 23, 24, 25, 26, 66, 0, 339,
1198 27, 0, 0, 130, 0, 0, 0, 0, 340, 341,
1199 0, 0, 132, 133, 134, 135, 0, 0, 7, 0,
1200 0, 136, 0, 0, 0, 137, 0, 0, 0, 0,
1201 0, 0, 0, 0, 0, 0, 14, 209, 16, 17,
1202 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
1203 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
1204 0, 0, 28, 0, 0, 212, 0, 0, 0, 66,
1205 138, 0, 0, 139, 140, 141, 325, 326, 327, 0,
1206 328, 0, 0, 329, 0, 124, 125, 330, 331, 332,
1207 7, 333, 8, 334, 126, 127, 0, 10, 0, 12,
1208 0, 0, 0, 0, 0, 335, 336, 337, 0, 338,
1209 0, 0, 128, 129, 18, 19, 20, 21, 22, 23,
1210 24, 25, 26, 66, 0, 339, 27, 0, 0, 130,
1211 0, 0, 0, 0, 340, 498, 0, 0, 132, 133,
1212 134, 135, 0, 0, 0, 0, 0, 136, 0, 0,
1213 0, 137, 429, 430, 431, 432, 433, 434, 435, 436,
1214 437, 438, 439, 440, 441, 442, 0, 0, 0, 0,
1215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1216 0, 0, 0, 0, 0, 0, 0, 0, 28, 0,
1217 0, 212, 0, 0, 0, 66, 138, 0, 0, 139,
1218 140, 141, 325, 326, 327, 0, 328, 0, 0, 329,
1219 0, 124, 125, 330, 331, 332, 7, 333, 8, 334,
1220 126, 127, 0, 10, 0, 12, 0, 0, 0, 0,
1221 0, 335, 336, 337, 0, 338, 0, 0, 128, 129,
1222 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1223 0, 339, 27, 0, 0, 130, 0, 0, 0, 0,
1224 340, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1225 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1229 0, 0, 0, 0, 28, 0, 0, 212, 0, 0,
1230 0, 66, 138, 0, 0, 139, 140, 141, 325, 326,
1231 327, 0, 328, 0, 0, 329, 0, 124, 125, 330,
1232 3556 331, 332, 7, 333, 8, 334, 126, 127, 0, 10,
1233 3556 0, 12, 0, 0, 0, 0, 0, 335, 336, 337,
1234 3556 0, 338, 0, 0, 128, 129, 18, 19, 20, 21,
1235 3556 22, 23, 24, 25, 26, 0, 0, 339, 27, 0,
1236 3556 0, 130, 0, 0, 0, 0, 340, 0, 0, 0,
1237 3556 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1238 3556 0, 0, 0, 137, 0, 7, 0, 8, 513, 0,
1239 3556 0, 0, 10, 0, 12, 0, 0, 0, 0, 0,
1240 0, 0, 0, 14, 15, 16, 17, 0, 0, 18,
1241 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1242 28, 27, 0, 0, 0, 0, 0, 66, 138, 0,
1243 514, 139, 140, 141, 325, 326, 327, 0, 328, 0,
1244 0, 329, 0, 124, 125, 330, 545, 546, 7, 333,
1245 6057 8, 334, 126, 127, 0, 10, 0, 0, 0, 0,
1246
3/8
✓ Branch 0 taken 6057 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6057 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 6057 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
6057 0, 0, 0, 335, 336, 0, 0, 338, 0, 0,
1247 128, 129, 0, 19, 20, 21, 22, 23, 24, 25,
1248 26, 0, 0, 28, 27, 0, 212, 130, 0, 0,
1249 66, 0, 340, 0, 0, 0, 132, 133, 134, 135,
1250 0, 0, 0, 0, 0, 136, 0, 0, 0, 137,
1251 3555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1252
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 0, 0, 0, 0, 0, 0, 4, 5, 0, 0,
1253 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,
1254 0, 0, 7, 0, 8, 9, 28, 0, 0, 10,
1255 11, 12, 13, 66, 138, 0, 0, 139, 140, 141,
1256 14, 15, 16, 17, 0, 0, 18, 19, 20, 21,
1257 920 22, 23, 24, 25, 26, 4, 5, 0, 27, 0,
1258 920 0, 0, 0, 0, 0, 6, 0, 0, 0, 0,
1259 920 0, 7, 0, 8, 9, 0, 0, 0, 10, 11,
1260 920 12, 13, 0, 0, 0, 0, 0, 0, 0, 14,
1261 920 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1262 23, 24, 25, 26, 0, 0, 0, 27, 0, 0,
1263 4, 5, 0, 0, 0, 0, 0, 0, 0, 0,
1264 28, 0, 0, 29, 0, 0, 7, 30, 8, 289,
1265 0, 0, 0, 10, 11, 12, 0, 0, 0, 0,
1266 0, 0, 0, 0, 14, 15, 16, 17, 0, 0,
1267 18, 19, 20, 21, 22, 23, 24, 25, 26, 4,
1268 5, 0, 27, 0, 0, 0, 0, 0, 0, 28,
1269 0, 290, 443, 0, 0, 7, 30, 8, 289, 0,
1270 0, 0, 10, 11, 12, 317, 0, 0, 124, 125,
1271 0, 0, 0, 14, 15, 16, 17, 126, 127, 18,
1272 19, 20, 21, 22, 23, 24, 25, 26, 0, 0,
1273
2/6
✓ Branch 0 taken 3556 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3556 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3556 0, 27, 0, 0, 0, 128, 129, 0, 0, 0,
1274 450, 0, 0, 0, 28, 0, 0, 212, 0, 27,
1275 0, 30, 130, 0, 0, 0, 0, 131, 0, 0,
1276 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1277 136, 0, 0, 0, 137, 0, 0, 0, 0, 0,
1278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1279 0, 0, 0, 28, 0, 0, 212, 0, 124, 125,
1280 30, 0, 0, 7, 0, 0, 0, 126, 127, 0,
1281 0, 0, 0, 0, 0, 0, 0, 318, 66, 138,
1282 0, 0, 139, 140, 141, 128, 129, 0, 19, 20,
1283 21, 22, 23, 24, 25, 26, 0, 0, 0, 27,
1284 0, 0, 562, 563, 0, 564, 0, 131, 0, 0,
1285 79 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1286 4385 136, 0, 124, 125, 137, 0, 0, 7, 0, 0,
1287 0, 126, 127, 0, 0, 0, 0, 0, 0, 0,
1288 4 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
1289 6 129, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1290 2 0, 0, 0, 27, 0, 0, 130, 0, 565, 138,
1291 0, 131, 139, 140, 141, 132, 133, 134, 135, 0,
1292 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1293 0, 0, 0, 0, 0, 0, 0, 0, 124, 125,
1294 0, 0, 0, 0, 0, 0, 0, 126, 127, 0,
1295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1296 0, 124, 125, 0, 0, 128, 129, 0, 0, 0,
1297 126, 127, 66, 138, 0, 0, 139, 140, 141, 27,
1298 0, 0, 562, 0, 0, 564, 0, 131, 128, 129,
1299 0, 132, 133, 134, 135, 0, 0, 0, 0, 0,
1300 153 136, 0, 27, 0, 137, 562, 0, 0, 564, 0,
1301 153 131, 0, 0, 0, 132, 133, 134, 135, 0, 0,
1302 153 0, 0, 0, 136, 0, 0, 0, 137, 0, 0,
1303 0, 0, 0, 0, 0, 0, 0, 124, 125, 0,
1304
2/6
✓ Branch 0 taken 41 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 41 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
41 0, 0, 0, 0, 0, 0, 126, 127, 66, 138,
1305 700, 0, 139, 140, 141, 0, 0, 124, 125, 0,
1306 0, 0, 0, 0, 128, 129, 126, 127, 0, 0,
1307 0, 66, 138, 726, 0, 139, 140, 141, 27, 0,
1308 0, 130, 402, 0, 128, 129, 131, 0, 0, 0,
1309 132, 133, 134, 135, 0, 0, 0, 0, 27, 136,
1310 0, 130, 527, 137, 0, 0, 131, 0, 0, 0,
1311 192 132, 133, 134, 135, 0, 0, 0, 0, 0, 136,
1312 192 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
1313
2/6
✓ Branch 0 taken 192 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 192 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
192 0, 0, 0, 124, 125, 0, 0, 0, 0, 0,
1314 0, 0, 126, 127, 0, 0, 0, 66, 138, 0,
1315 0, 139, 140, 141, 0, 0, 0, 0, 0, 0,
1316 2 128, 129, 0, 0, 0, 0, 0, 66, 138, 124,
1317 2 125, 139, 140, 141, 27, 0, 0, 130, 126, 127,
1318
2/6
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2 0, 0, 131, 445, 0, 0, 132, 133, 134, 135,
1319 0, 0, 0, 0, 0, 136, 128, 129, 0, 137,
1320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1321 27, 124, 125, 562, 0, 0, 564, 0, 131, 0,
1322 126, 127, 132, 133, 134, 135, 0, 0, 0, 0,
1323 0, 136, 0, 0, 0, 137, 0, 0, 128, 129,
1324 0, 0, 0, 66, 138, 0, 0, 139, 140, 141,
1325 0, 0, 27, 0, 0, 130, 0, 0, 0, 0,
1326 131, 684, 124, 125, 132, 133, 134, 135, 0, 0,
1327 0, 126, 127, 136, 0, 0, 0, 137, 0, 66,
1328 138, 0, 0, 139, 140, 141, 0, 0, 0, 128,
1329 129, 0, 124, 125, 0, 0, 0, 0, 0, 0,
1330 0, 126, 127, 27, 0, 0, 130, 0, 0, 0,
1331 0, 131, 0, 0, 0, 132, 133, 134, 135, 128,
1332 0, 66, 138, 0, 136, 139, 140, 141, 137, 0,
1333 0, 0, 0, 27, 0, 0, 130, 0, 0, 0,
1334 0, 131, 0, 0, 0, 132, 133, 134, 135, 0,
1335 0, 0, 0, 0, 136, 0, 0, 0, 137, 0,
1336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1337 0, 0, 66, 138, 0, 0, 139, 140, 141, 0,
1338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1339 0, 7, 0, 8, 208, 0, 0, 0, 10, 0,
1340 12, 0, 66, 138, 0, 0, 139, 140, 141, 14,
1341 209, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1342 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1343 0, 0, 0, 10, 0, 12, 210, 0, 0, 0,
1344 0, 0, 211, 0, 14, 209, 16, 17, 0, 0,
1345 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1346 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1347 0, 387, 0, 0, 0, 0, 0, 211, 0, 0,
1348 2583187 0, 7, 0, 8, 513, 0, 0, 0, 10, 28,
1349
3/4
✗ Branch 0 not taken.
✓ Branch 1 taken 2583187 times.
✓ Branch 2 taken 869837 times.
✓ Branch 3 taken 1713350 times.
2583187 12, 0, 212, 0, 0, 0, 66, 0, 0, 14,
1350 15, 16, 17, 0, 0, 18, 19, 20, 21, 22,
1351 869837 23, 24, 25, 26, 0, 0, 7, 27, 8, 208,
1352 869837 0, 0, 0, 10, 28, 12, 591, 212, 0, 0,
1353 0, 66, 0, 0, 14, 15, 16, 17, 0, 0,
1354 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
1355
2/6
✓ Branch 0 taken 1713350 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1713350 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1713350 0, 0, 27, 0, 0, 0, 0, 0, 0, 0,
1356 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
1357 0, 8, 513, 0, 0, 0, 10, 0, 12, 28,
1358 0, 0, 212, 0, 0, 0, 66, 14, 15, 16,
1359 17, 0, 0, 18, 19, 20, 21, 22, 23, 24,
1360 25, 26, 0, 0, 0, 27, 0, 0, 0, 0,
1361 0, 0, 0, 0, 28, 0, 0, 0, 0, 0,
1362 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
1363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1364 1673034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1366 943 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,
1367 0, 0, 0, 0, 66
1368 };
1369 3804182
1370 1035301 static const yytype_int16 yycheck[] =
1371 1756637 {
1372 157044 2, 2, 234, 41, 2, 7, 8, 100, 2, 85,
1373 384552 292, 220, 14, 15, 16, 17, 2, 15, 51, 266,
1374 1 2, 2, 2, 2, 2, 475, 193, 371, 41, 521,
1375 10631 476, 180, 175, 26, 475, 475, 475, 11, 11, 41,
1376 659 11, 627, 475, 2, 475, 76, 509, 2, 31, 32,
1377 33, 475, 55, 60, 54, 14, 288, 16, 17, 52,
1378 3841673 6, 2, 59, 54, 565, 51, 79, 55, 475, 71,
1379
2/6
✓ Branch 0 taken 809196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 809196 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
809196 60, 678, 60, 26, 59, 475, 78, 79, 664, 76,
1380 26, 2, 55, 60, 61, 132, 133, 134, 135, 136,
1381 58, 60, 60, 59, 64, 52, 0, 16, 52, 52,
1382 707, 52, 76, 76, 10, 11, 52, 183, 184, 185,
1383 64, 612, 188, 64, 91, 34, 21, 124, 63, 121,
1384 121, 124, 585, 121, 52, 82, 128, 121, 125, 129,
1385
2/6
✓ Branch 0 taken 44440 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 44440 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
44440 716, 124, 129, 130, 124, 137, 124, 2, 129, 122,
1386 125, 58, 121, 8, 287, 65, 91, 178, 186, 14,
1387 15, 16, 17, 124, 124, 124, 124, 306, 64, 125,
1388 209, 58, 121, 91, 124, 611, 121, 60, 61, 89,
1389 662, 220, 27, 340, 176, 176, 28, 627, 176, 124,
1390 121, 58, 176, 80, 351, 127, 627, 627, 627, 82,
1391
2/6
✓ Branch 0 taken 13023 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 13023 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
13023 124, 193, 225, 195, 627, 641, 627, 176, 211, 246,
1392 121, 83, 84, 627, 178, 178, 71, 209, 90, 211,
1393 53, 209, 55, 78, 664, 447, 3, 176, 220, 220,
1394 627, 176, 220, 664, 664, 664, 220, 627, 110, 52,
1395 54, 664, 53, 664, 55, 176, 54, 58, 56, 62,
1396 664, 220, 52, 75, 76, 63, 284, 52, 324, 59,
1397 57, 58, 59, 60, 59, 176, 121, 664, 53, 80,
1398 358089 55, 220, 52, 52, 664, 220, 716, 74, 75, 59,
1399 59, 52, 137, 124, 52, 716, 716, 716, 59, 220,
1400 282, 59, 54, 716, 282, 716, 630, 54, 282, 536,
1401 292, 292, 716, 53, 292, 55, 282, 54, 292, 220,
1402 398385 282, 282, 282, 282, 282, 381, 77, 78, 346, 716,
1403 52, 176, 3, 292, 61, 348, 716, 59, 600, 66,
1404 67, 68, 52, 282, 400, 60, 54, 282, 63, 59,
1405 195, 333, 59, 292, 63, 62, 338, 292, 340, 59,
1406 338, 282, 62, 54, 209, 79, 80, 81, 82, 351,
1407 351, 292, 54, 14, 15, 220, 105, 106, 107, 108,
1408 109, 282, 23, 24, 254, 255, 256, 257, 53, 371,
1409 55, 292, 124, 449, 72, 73, 74, 379, 379, 129,
1410 130, 379, 475, 56, 57, 379, 595, 258, 259, 260,
1411 261, 31, 32, 33, 55, 63, 472, 58, 63, 401,
1412 379, 55, 63, 44, 45, 46, 47, 48, 49, 50,
1413 51, 27, 488, 58, 55, 491, 58, 282, 127, 80,
1414 379, 247, 248, 249, 379, 10, 11, 292, 250, 251,
1415 127, 69, 252, 253, 510, 52, 124, 117, 379, 58,
1416 124, 71, 85, 58, 58, 58, 58, 85, 87, 86,
1417 59, 125, 88, 685, 11, 63, 58, 54, 379, 19,
1418 122, 54, 629, 124, 125, 54, 54, 128, 129, 130,
1419 54, 124, 127, 475, 476, 477, 58, 475, 38, 59,
1420 124, 475, 58, 124, 44, 45, 46, 47, 48, 49,
1421 50, 51, 130, 131, 125, 55, 475, 59, 54, 501,
1422 54, 54, 54, 54, 54, 8, 371, 509, 52, 58,
1423
2/6
✓ Branch 0 taken 12626 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 12626 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
12626 586, 678, 59, 58, 379, 121, 121, 121, 121, 521,
1424 521, 121, 121, 521, 58, 58, 58, 521, 58, 58,
1425 58, 54, 54, 54, 627, 54, 54, 54, 54, 54,
1426 707, 127, 521, 710, 56, 183, 184, 185, 59, 59,
1427 188, 189, 59, 62, 59, 59, 54, 54, 725, 54,
1428 3255217 19, 563, 521, 54, 124, 58, 521, 54, 58, 54,
1429
2/6
✓ Branch 0 taken 220 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 220 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
220 54, 664, 54, 54, 62, 54, 59, 91, 52, 59,
1430 521, 59, 59, 585, 59, 44, 45, 46, 47, 48,
1431 49, 50, 51, 595, 129, 59, 55, 595, 600, 675,
1432 521, 595, 600, 241, 242, 129, 600, 59, 58, 58,
1433 82, 476, 477, 59, 59, 59, 595, 619, 52, 621,
1434 5561005 622, 600, 624, 716, 63, 627, 628, 629, 630, 627,
1435 5561005 59, 59, 708, 627, 54, 59, 595, 63, 59, 8,
1436 5561005 595, 600, 8, 8, 509, 600, 105, 59, 627, 59,
1437 5561005 8, 91, 56, 8, 595, 8, 521, 8, 59, 600,
1438 662, 56, 664, 665, 662, 124, 664, 669, 662, 671,
1439 664, 673, 674, 56, 595, 56, 678, 679, 56, 600,
1440 682, 56, 59, 662, 56, 664, 324, 8, 56, 7,
1441 282, 329, 501, 630, 696, 220, 348, 41, 62, 106,
1442 396, 336, 340, 662, 262, 707, 401, 662, 710, 710,
1443 712, 713, 677, 129, 716, 717, 718, 719, 716, 19,
1444 585, 662, 716, 725, 725, 263, 70, 264, 267, 265,
1445 595, 663, 708, -1, 736, 600, -1, 716, 740, -1,
1446 5387124 -1, 662, -1, 381, 44, 45, 46, 47, 48, 49,
1447
2/6
✓ Branch 0 taken 5387124 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5387124 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5387124 50, 51, -1, -1, 563, 55, -1, -1, 396, -1,
1448 398, -1, 400, 19, -1, 630, -1, -1, 112, 113,
1449 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
1450 -1, 37, 38, 39, 40, -1, -1, -1, 44, 45,
1451 8 46, 47, 48, 49, 50, 51, -1, 662, -1, 55,
1452
2/6
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
8 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1453 619, 449, 621, 622, -1, 624, -1, -1, -1, 628,
1454 -1, -1, -1, -1, 124, -1, -1, -1, -1, -1,
1455 -1, 175, -1, -1, 472, -1, -1, -1, 476, 477,
1456 -1, 479, 186, 481, -1, -1, -1, -1, -1, -1,
1457 488, 489, 196, 491, -1, -1, 665, -1, -1, -1,
1458 1675992 669, -1, 671, -1, 673, 674, -1, -1, 124, -1,
1459 679, -1, 510, 682, 91, 92, 93, 94, 95, 96,
1460 80645 97, 98, 99, 100, 101, 102, 103, 696, -1, -1,
1461 80645 -1, -1, -1, -1, -1, 533, 113, -1, -1, -1,
1462 80645 -1, -1, 11, 712, 713, 14, 15, -1, 717, 718,
1463 719, -1, -1, -1, 23, 24, -1, -1, -1, -1,
1464 -1, -1, -1, -1, 562, -1, 564, 736, -1, -1,
1465 -1, 740, 41, 42, -1, -1, -1, -1, -1, -1,
1466 284, -1, -1, 287, -1, -1, 55, -1, 586, 58,
1467 -1, -1, -1, -1, 63, -1, -1, -1, 67, 68,
1468 5 69, 70, -1, -1, -1, -1, 604, 76, -1, 607,
1469 5 -1, 80, -1, 611, -1, 613, 614, 615, 616, 617,
1470
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 618, -1, -1, -1, -1, -1, -1, 625, 626, -1,
1471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1472 638, 639, 346, 641, -1, -1, -1, -1, 3, 4,
1473 -1, 649, -1, -1, 123, 124, 125, -1, -1, 128,
1474 129, 130, -1, -1, 19, 663, 21, 22, 372, -1,
1475 668, 26, 27, 28, -1, -1, -1, 675, -1, -1,
1476 -1, -1, 37, 38, 39, 40, -1, -1, 43, 44,
1477 1325927 45, 46, 47, 48, 49, 50, 51, 695, -1, -1,
1478 1325927 55, -1, 5, 6, 7, -1, 9, 10, 11, 12,
1479
2/6
✓ Branch 0 taken 1325927 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1325927 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1325927 708, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1480 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1481 430705 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1482 430705 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1483 430705 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1484
2/6
✓ Branch 0 taken 430705 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 430705 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
430705 63, -1, 117, -1, 67, 68, 69, 70, -1, 124,
1485 -1, 475, 19, 76, -1, -1, -1, 80, -1, -1,
1486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1487 37, 38, 39, 40, -1, -1, -1, 44, 45, 46,
1488 47, 48, 49, 50, 51, -1, -1, 511, 55, -1,
1489 157044 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1490 157044 -1, 124, 125, -1, -1, 128, 129, 130, -1, -1,
1491 157044 5, 6, 7, -1, 9, -1, -1, 12, -1, 14,
1492 157044 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1493 -1, 26, -1, 28, -1, -1, -1, -1, -1, 34,
1494 35, 36, -1, 38, -1, 569, 41, 42, 43, 44,
1495 45, 46, 47, 48, 49, 50, 51, 124, -1, 54,
1496 1974820 55, -1, -1, 58, -1, -1, -1, -1, 63, 64,
1497 1974820 -1, -1, 67, 68, 69, 70, -1, -1, 19, -1,
1498 1974820 -1, 76, -1, -1, -1, 80, -1, -1, -1, -1,
1499 1974820 -1, -1, -1, -1, -1, -1, 37, 38, 39, 40,
1500 1974820 -1, -1, -1, 44, 45, 46, 47, 48, 49, 50,
1501 1974820 51, -1, -1, -1, 55, -1, -1, -1, -1, -1,
1502 -1, -1, 117, -1, -1, 120, -1, -1, -1, 124,
1503
2/6
✓ Branch 0 taken 157044 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 157044 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
157044 125, -1, -1, 128, 129, 130, 5, 6, 7, -1,
1504 9, -1, -1, 12, -1, 14, 15, 16, 17, 18,
1505 19, 20, 21, 22, 23, 24, -1, 26, -1, 28,
1506 -1, -1, -1, -1, -1, 34, 35, 36, -1, 38,
1507 -1, -1, 41, 42, 43, 44, 45, 46, 47, 48,
1508 49, 50, 51, 124, -1, 54, 55, -1, -1, 58,
1509 -1, -1, -1, -1, 63, 64, -1, -1, 67, 68,
1510 69, 70, -1, -1, -1, -1, -1, 76, -1, -1,
1511 -1, 80, 268, 269, 270, 271, 272, 273, 274, 275,
1512 276, 277, 278, 279, 280, 281, -1, -1, -1, -1,
1513 85852 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1514 85852 -1, -1, -1, -1, -1, -1, -1, -1, 117, -1,
1515 85852 -1, 120, -1, -1, -1, 124, 125, -1, -1, 128,
1516 85852 129, 130, 5, 6, 7, -1, 9, -1, -1, 12,
1517 -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1518 1881 23, 24, -1, 26, -1, 28, -1, -1, -1, -1,
1519 1881 -1, 34, 35, 36, -1, 38, -1, -1, 41, 42,
1520 1881 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1521 -1, 54, 55, -1, -1, 58, -1, -1, -1, -1,
1522 940 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1523 940 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1524 940 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1525 940 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1527 -1, -1, -1, -1, 117, -1, -1, 120, -1, -1,
1528 -1, 124, 125, -1, -1, 128, 129, 130, 5, 6,
1529 7, -1, 9, -1, -1, 12, -1, 14, 15, 16,
1530 17, 18, 19, 20, 21, 22, 23, 24, -1, 26,
1531 -1, 28, -1, -1, -1, -1, -1, 34, 35, 36,
1532 -1, 38, -1, -1, 41, 42, 43, 44, 45, 46,
1533 47, 48, 49, 50, 51, -1, -1, 54, 55, -1,
1534
2/6
✓ Branch 0 taken 1989974 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1989974 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1989974 -1, 58, -1, -1, -1, -1, 63, -1, -1, -1,
1535 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1536 -1, -1, -1, 80, -1, 19, -1, 21, 22, -1,
1537 -1, -1, 26, -1, 28, -1, -1, -1, -1, -1,
1538 -1, -1, -1, 37, 38, 39, 40, -1, -1, 43,
1539
2/6
✓ Branch 0 taken 5634 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5634 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5634 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1540 117, 55, -1, -1, -1, -1, -1, 124, 125, -1,
1541 64, 128, 129, 130, 5, 6, 7, -1, 9, -1,
1542 -1, 12, -1, 14, 15, 16, 17, 18, 19, 20,
1543 21, 22, 23, 24, -1, 26, -1, -1, -1, -1,
1544 -1, -1, -1, 34, 35, -1, -1, 38, -1, -1,
1545 41, 42, -1, 44, 45, 46, 47, 48, 49, 50,
1546 51, -1, -1, 117, 55, -1, 120, 58, -1, -1,
1547 124, -1, 63, -1, -1, -1, 67, 68, 69, 70,
1548 -1, -1, -1, -1, -1, 76, -1, -1, -1, 80,
1549 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1550 -1, -1, -1, -1, -1, -1, 3, 4, -1, -1,
1551
2/6
✓ Branch 0 taken 136256 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 136256 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
136256 -1, -1, -1, -1, -1, -1, 13, -1, -1, -1,
1552 -1, -1, 19, -1, 21, 22, 117, -1, -1, 26,
1553 27, 28, 29, 124, 125, -1, -1, 128, 129, 130,
1554 37, 38, 39, 40, -1, -1, 43, 44, 45, 46,
1555 47, 48, 49, 50, 51, 3, 4, -1, 55, -1,
1556 -1, -1, -1, -1, -1, 13, -1, -1, -1, -1,
1557 384547 -1, 19, -1, 21, 22, -1, -1, -1, 26, 27,
1558 5 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
1559 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1560 48, 49, 50, 51, -1, -1, -1, 55, -1, -1,
1561 3, 4, -1, -1, -1, -1, -1, -1, -1, -1,
1562 117, -1, -1, 120, -1, -1, 19, 124, 21, 22,
1563 -1, -1, -1, 26, 27, 28, -1, -1, -1, -1,
1564 -1, -1, -1, -1, 37, 38, 39, 40, -1, -1,
1565 43, 44, 45, 46, 47, 48, 49, 50, 51, 3,
1566 4, -1, 55, -1, -1, -1, -1, -1, -1, 117,
1567 -1, 64, 120, -1, -1, 19, 124, 21, 22, -1,
1568
1/2
✓ Branch 0 taken 384550 times.
✗ Branch 1 not taken.
384550 -1, -1, 26, 27, 28, 11, -1, -1, 14, 15,
1569 -1, -1, -1, 37, 38, 39, 40, 23, 24, 43,
1570 44, 45, 46, 47, 48, 49, 50, 51, -1, -1,
1571 -1, 55, -1, -1, -1, 41, 42, -1, -1, -1,
1572 64, -1, -1, -1, 117, -1, -1, 120, -1, 55,
1573 -1, 124, 58, -1, -1, -1, -1, 63, -1, -1,
1574 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1575 76, -1, -1, -1, 80, -1, -1, -1, -1, -1,
1576 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1577 -1, -1, -1, 117, -1, -1, 120, -1, 14, 15,
1578 124, -1, -1, 19, -1, -1, -1, 23, 24, -1,
1579 -1, -1, -1, -1, -1, -1, -1, 123, 124, 125,
1580 -1, -1, 128, 129, 130, 41, 42, -1, 44, 45,
1581 384546 46, 47, 48, 49, 50, 51, -1, -1, -1, 55,
1582 384546 -1, -1, 58, 59, -1, 61, -1, 63, -1, -1,
1583 384546 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1584 384546 76, -1, 14, 15, 80, -1, -1, 19, -1, -1,
1585
2/6
✓ Branch 0 taken 384546 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 384546 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
384546 -1, 23, 24, -1, -1, -1, -1, -1, -1, -1,
1586 -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
1587 42, -1, 44, 45, 46, 47, 48, 49, 50, 51,
1588 -1, -1, -1, 55, -1, -1, 58, -1, 124, 125,
1589 -1, 63, 128, 129, 130, 67, 68, 69, 70, -1,
1590 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1591 -1, -1, -1, -1, -1, -1, -1, -1, 14, 15,
1592 -1, -1, -1, -1, -1, -1, -1, 23, 24, -1,
1593 1 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1594 1 -1, 14, 15, -1, -1, 41, 42, -1, -1, -1,
1595 1 23, 24, 124, 125, -1, -1, 128, 129, 130, 55,
1596 1 -1, -1, 58, -1, -1, 61, -1, 63, 41, 42,
1597 1 -1, 67, 68, 69, 70, -1, -1, -1, -1, -1,
1598
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1 76, -1, 55, -1, 80, 58, -1, -1, 61, -1,
1599 63, -1, -1, -1, 67, 68, 69, 70, -1, -1,
1600 -1, -1, -1, 76, -1, -1, -1, 80, -1, -1,
1601 -1, -1, -1, -1, -1, -1, -1, 14, 15, -1,
1602 -1, -1, -1, -1, -1, -1, 23, 24, 124, 125,
1603 126, -1, 128, 129, 130, -1, -1, 14, 15, -1,
1604 -1, -1, -1, -1, 41, 42, 23, 24, -1, -1,
1605 -1, 124, 125, 126, -1, 128, 129, 130, 55, -1,
1606 5 -1, 58, 59, -1, 41, 42, 63, -1, -1, -1,
1607 5 67, 68, 69, 70, -1, -1, -1, -1, 55, 76,
1608 5 -1, 58, 59, 80, -1, -1, 63, -1, -1, -1,
1609 67, 68, 69, 70, -1, -1, -1, -1, -1, 76,
1610
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 -1, -1, -1, 80, -1, -1, -1, -1, -1, -1,
1611 -1, -1, -1, 14, 15, -1, -1, -1, -1, -1,
1612 -1, -1, 23, 24, -1, -1, -1, 124, 125, -1,
1613 -1, 128, 129, 130, -1, -1, -1, -1, -1, -1,
1614 41, 42, -1, -1, -1, -1, -1, 124, 125, 14,
1615 15, 128, 129, 130, 55, -1, -1, 58, 23, 24,
1616 -1, -1, 63, 64, -1, -1, 67, 68, 69, 70,
1617 -1, -1, -1, -1, -1, 76, 41, 42, -1, 80,
1618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1619 55, 14, 15, 58, -1, -1, 61, -1, 63, -1,
1620 23, 24, 67, 68, 69, 70, -1, -1, -1, -1,
1621 -1, 76, -1, -1, -1, 80, -1, -1, 41, 42,
1622 -1, -1, -1, 124, 125, -1, -1, 128, 129, 130,
1623 -1, -1, 55, -1, -1, 58, -1, -1, -1, -1,
1624 63, 64, 14, 15, 67, 68, 69, 70, -1, -1,
1625 -1, 23, 24, 76, -1, -1, -1, 80, -1, 124,
1626 125, -1, -1, 128, 129, 130, -1, -1, -1, 41,
1627 42, -1, 14, 15, -1, -1, -1, -1, -1, -1,
1628 -1, 23, 24, 55, -1, -1, 58, -1, -1, -1,
1629 -1, 63, -1, -1, -1, 67, 68, 69, 70, 41,
1630 -1, 124, 125, -1, 76, 128, 129, 130, 80, -1,
1631 -1, -1, -1, 55, -1, -1, 58, -1, -1, -1,
1632 -1, 63, -1, -1, -1, 67, 68, 69, 70, -1,
1633 -1, -1, -1, -1, 76, -1, -1, -1, 80, -1,
1634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1635 -1, -1, 124, 125, -1, -1, 128, 129, 130, -1,
1636 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1637 -1, 19, -1, 21, 22, -1, -1, -1, 26, -1,
1638 28, -1, 124, 125, -1, -1, 128, 129, 130, 37,
1639 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1640 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1641 -1, -1, -1, 26, -1, 28, 64, -1, -1, -1,
1642 -1, -1, 70, -1, 37, 38, 39, 40, -1, -1,
1643 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1644 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1645 -1, 64, -1, -1, -1, -1, -1, 70, -1, -1,
1646 -1, 19, -1, 21, 22, -1, -1, -1, 26, 117,
1647 28, -1, 120, -1, -1, -1, 124, -1, -1, 37,
1648 38, 39, 40, -1, -1, 43, 44, 45, 46, 47,
1649 1 48, 49, 50, 51, -1, -1, 19, 55, 21, 22,
1650 -1, -1, -1, 26, 117, 28, 64, 120, -1, -1,
1651 -1, 124, -1, -1, 37, 38, 39, 40, -1, -1,
1652 43, 44, 45, 46, 47, 48, 49, 50, 51, -1,
1653 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1,
1654 1 -1, -1, -1, -1, -1, -1, -1, -1, -1, 19,
1655 -1, 21, 22, -1, -1, -1, 26, -1, 28, 117,
1656 -1, -1, 120, -1, -1, -1, 124, 37, 38, 39,
1657 40, -1, -1, 43, 44, 45, 46, 47, 48, 49,
1658 50, 51, -1, -1, -1, 55, -1, -1, -1, -1,
1659 -1, -1, -1, -1, 117, -1, -1, -1, -1, -1,
1660 -1, 124, -1, -1, -1, -1, -1, -1, -1, -1,
1661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1663 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1664 -1, -1, -1, -1, -1, -1, -1, 117, -1, -1,
1665 -1, -1, -1, -1, 124
1666 };
1667
1668 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1669 state STATE-NUM. */
1670 static const yytype_uint8 yystos[] =
1671 {
1672 0, 132, 133, 0, 3, 4, 13, 19, 21, 22,
1673 1 26, 27, 28, 29, 37, 38, 39, 40, 43, 44,
1674 45, 46, 47, 48, 49, 50, 51, 55, 117, 120,
1675 124, 134, 136, 139, 140, 141, 142, 143, 144, 145,
1676 146, 147, 148, 149, 150, 151, 158, 167, 174, 175,
1677 176, 180, 181, 207, 208, 210, 211, 213, 214, 215,
1678 216, 217, 21, 124, 166, 127, 124, 149, 147, 58,
1679 63, 91, 124, 212, 214, 216, 27, 28, 38, 147,
1680 158, 151, 158, 158, 158, 58, 124, 31, 32, 33,
1681 122, 54, 54, 54, 54, 60, 152, 153, 154, 159,
1682 160, 211, 217, 54, 54, 3, 52, 124, 175, 208,
1683 54, 216, 53, 210, 53, 210, 53, 210, 53, 210,
1684 176, 63, 168, 124, 14, 15, 23, 24, 41, 42,
1685 58, 63, 67, 68, 69, 70, 76, 80, 125, 128,
1686 129, 130, 211, 218, 219, 221, 222, 223, 224, 225,
1687 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
1688
3/8
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1 236, 237, 238, 239, 240, 242, 245, 246, 247, 248,
1689 249, 153, 209, 217, 147, 63, 63, 212, 27, 242,
1690 58, 127, 127, 58, 11, 124, 52, 60, 61, 91,
1691 156, 54, 56, 63, 185, 58, 80, 124, 181, 217,
1692 217, 217, 217, 217, 217, 217, 217, 124, 22, 38,
1693 64, 70, 120, 139, 143, 144, 145, 151, 158, 159,
1694 169, 170, 171, 172, 173, 180, 207, 211, 58, 58,
1695 211, 238, 240, 240, 250, 225, 225, 225, 225, 225,
1696 147, 58, 61, 66, 67, 68, 71, 72, 73, 74,
1697 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1698 90, 110, 85, 86, 87, 88, 65, 89, 91, 92,
1699 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1700 103, 113, 59, 125, 52, 64, 135, 63, 209, 22,
1701 64, 136, 137, 138, 139, 143, 144, 145, 150, 151,
1702 158, 167, 174, 175, 207, 212, 52, 59, 59, 76,
1703 129, 130, 246, 242, 11, 123, 242, 11, 123, 242,
1704 153, 157, 242, 240, 11, 5, 6, 7, 9, 12,
1705 16, 17, 18, 20, 22, 34, 35, 36, 38, 54,
1706 63, 64, 139, 143, 144, 145, 147, 151, 180, 183,
1707 185, 186, 187, 189, 192, 194, 195, 196, 197, 198,
1708 199, 200, 202, 203, 204, 205, 206, 207, 211, 240,
1709 241, 105, 147, 162, 163, 164, 165, 161, 217, 63,
1710 177, 58, 170, 159, 54, 54, 54, 64, 143, 170,
1711 171, 173, 54, 54, 124, 127, 58, 59, 52, 135,
1712 61, 82, 59, 220, 240, 240, 124, 225, 226, 226,
1713 226, 227, 227, 228, 228, 229, 229, 229, 229, 230,
1714 230, 230, 230, 231, 232, 233, 234, 237, 235, 239,
1715 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1716 239, 239, 239, 120, 134, 64, 153, 209, 135, 58,
1717 64, 138, 143, 54, 54, 54, 54, 54, 54, 246,
1718 129, 130, 59, 59, 59, 52, 121, 121, 121, 121,
1719 121, 121, 52, 62, 242, 58, 58, 58, 188, 58,
1720 240, 58, 54, 129, 54, 129, 182, 183, 58, 58,
1721 188, 58, 240, 54, 54, 54, 54, 197, 64, 143,
1722 183, 8, 54, 54, 54, 54, 163, 217, 59, 52,
1723 91, 52, 82, 22, 64, 139, 143, 144, 145, 151,
1724 158, 178, 179, 207, 242, 59, 59, 59, 220, 240,
1725 242, 211, 222, 52, 59, 62, 56, 135, 242, 59,
1726 59, 59, 127, 242, 54, 17, 18, 145, 151, 184,
1727 185, 187, 189, 192, 196, 202, 203, 205, 206, 207,
1728 217, 241, 58, 59, 61, 124, 147, 240, 244, 147,
1729 155, 240, 240, 240, 54, 54, 16, 34, 242, 240,
1730 242, 182, 162, 242, 217, 58, 58, 54, 54, 54,
1731 54, 64, 143, 179, 54, 59, 59, 62, 240, 237,
1732 6 59, 59, 129, 129, 54, 56, 57, 201, 240, 182,
1733 240, 201, 124, 105, 106, 107, 108, 109, 52, 59,
1734 217, 59, 59, 59, 59, 58, 58, 59, 59, 59,
1735 52, 162, 242, 173, 82, 138, 240, 240, 52, 52,
1736 244, 201, 240, 240, 240, 240, 240, 240, 182, 91,
1737 182, 182, 63, 182, 240, 240, 184, 182, 183, 163,
1738 10626 164, 59, 59, 63, 54, 59, 240, 240, 52, 59,
1739 10626 244, 59, 240, 8, 8, 10, 11, 190, 191, 8,
1740
2/6
✓ Branch 0 taken 10626 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10626 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
10626 59, 59, 8, 179, 64, 250, 184, 193, 182, 59,
1741 62, 59, 62, 240, 182, 52, 59, 182, 182, 182,
1742 126, 240, 242, 243, 244, 56, 64, 191, 10, 11,
1743 186, 182, 8, 8, 182, 135, 52, 59, 8, 59,
1744 240, 182, 56, 56, 56, 186, 126, 242, 243, 56,
1745 182, 182, 184, 182, 182, 182, 59, 56, 56, 56,
1746 8, 182, 182
1747 5 };
1748 5
1749
2/6
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
5 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1750 static const yytype_uint8 yyr1[] =
1751 {
1752 0, 131, 132, 133, 133, 133, 134, 134, 134, 134,
1753 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1754 134, 135, 135, 136, 136, 137, 137, 137, 137, 138,
1755 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1756 138, 139, 140, 141, 141, 141, 142, 143, 143, 143,
1757 143, 143, 143, 144, 144, 145, 146, 147, 147, 148,
1758 148, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1759 150, 151, 151, 152, 152, 153, 153, 154, 154, 155,
1760 156, 156, 157, 157, 158, 158, 158, 158, 158, 159,
1761 159, 159, 160, 160, 161, 161, 162, 162, 162, 162,
1762 162, 163, 164, 164, 165, 166, 167, 168, 168, 169,
1763 653 169, 169, 169, 169, 169, 169, 169, 170, 170, 171,
1764 653 172, 173, 173, 173, 173, 173, 173, 173, 174, 175,
1765
2/6
✓ Branch 0 taken 653 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 653 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
653 176, 177, 177, 178, 178, 178, 178, 179, 179, 179,
1766 179, 179, 179, 179, 180, 180, 181, 181, 181, 181,
1767 181, 181, 182, 183, 183, 183, 183, 183, 183, 183,
1768 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1769 183, 183, 183, 183, 184, 184, 184, 184, 184, 184,
1770 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
1771 184, 184, 185, 185, 186, 186, 186, 186, 187, 187,
1772 6 188, 188, 188, 188, 189, 190, 190, 191, 191, 191,
1773 6 191, 191, 191, 191, 191, 192, 192, 193, 193, 194,
1774
2/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6 194, 195, 195, 196, 196, 197, 197, 198, 199, 199,
1775 200, 200, 200, 200, 200, 200, 201, 201, 202, 202,
1776 202, 202, 203, 203, 203, 203, 204, 205, 205, 206,
1777 207, 207, 208, 208, 208, 209, 209, 210, 211, 211,
1778 211, 211, 212, 212, 213, 213, 213, 213, 214, 214,
1779 214, 215, 215, 216, 217, 218, 218, 219, 219, 219,
1780 219, 220, 220, 221, 221, 221, 222, 222, 223, 224,
1781 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
1782 225, 226, 226, 227, 227, 227, 227, 228, 228, 228,
1783 229, 229, 229, 230, 230, 230, 230, 230, 231, 231,
1784 231, 231, 231, 232, 232, 233, 233, 234, 234, 235,
1785 235, 236, 236, 237, 237, 238, 238, 239, 239, 239,
1786 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1787 239, 239, 240, 241, 242, 243, 244, 244, 244, 244,
1788 244, 244, 244, 244, 244, 245, 245, 245, 245, 245,
1789 245, 245, 245, 246, 246, 247, 248, 248, 249, 249,
1790 249, 250, 250
1791 };
1792
1793 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1794 static const yytype_int8 yyr2[] =
1795 3754318 {
1796
2/6
✓ Branch 0 taken 3754318 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3754318 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3754318 0, 2, 1, 2, 2, 0, 1, 1, 1, 2,
1797
2/6
✓ Branch 0 taken 87356 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 87356 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
87356 2, 2, 1, 1, 1, 1, 2, 2, 2, 2,
1798 5, 2, 1, 4, 5, 2, 2, 1, 1, 1,
1799 2, 2, 2, 1, 1, 1, 1, 2, 2, 2,
1800 5, 3, 4, 2, 3, 7, 3, 5, 5, 5,
1801 5, 5, 5, 4, 6, 1, 3, 2, 1, 2,
1802 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1803 4, 2, 2, 3, 1, 3, 1, 2, 1, 4,
1804 3, 1, 3, 1, 2, 2, 2, 2, 2, 2,
1805 2, 5, 4, 7, 1, 3, 3, 1, 1, 1,
1806 0, 2, 5, 3, 2, 1, 3, 3, 2, 2,
1807 2, 2, 2, 1, 1, 1, 1, 2, 1, 2,
1808 1, 2, 1, 2, 2, 2, 2, 5, 2, 4,
1809 1, 3, 2, 2, 2, 1, 1, 2, 1, 2,
1810 2 2, 2, 2, 5, 3, 1, 5, 5, 5, 6,
1811
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 6, 4, 1, 2, 2, 2, 2, 2, 1, 1,
1812
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 1, 1, 1, 1, 1, 1, 2, 2, 3, 2,
1813
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 3, 1, 2, 2, 1, 1, 1, 1, 1, 1,
1814
1/2
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
2 1, 1, 1, 1, 1, 1, 1, 2, 1, 2,
1815 0, 1, 3, 2, 2, 2, 1, 1, 2, 2,
1816 4, 6, 4, 6, 7, 3, 2, 4, 3, 4,
1817 4, 3, 3, 3, 2, 1, 1, 3, 1, 9,
1818 11, 7, 9, 2, 1, 1, 1, 4, 3, 1,
1819 10, 9, 7, 8, 7, 5, 1, 1, 5, 7,
1820 5, 7, 6, 8, 6, 8, 5, 2, 1, 5,
1821 2, 1, 4, 6, 5, 3, 1, 1, 1, 1,
1822 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
1823 2, 3, 3, 1, 1, 1, 1, 4, 5, 3,
1824 4, 3, 1, 1, 1, 3, 1, 4, 3, 1,
1825 2, 2, 1, 4, 1, 1, 2, 2, 2, 2,
1826 1397279 2, 1, 3, 1, 3, 3, 3, 1, 3, 3,
1827 1, 3, 3, 1, 3, 3, 3, 3, 1, 3,
1828 3, 3, 3, 1, 3, 1, 3, 1, 3, 1,
1829 1039487 3, 1, 3, 1, 5, 1, 2, 1, 3, 3,
1830 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1831 1 3, 3, 1, 1, 1, 1, 3, 3, 3, 3,
1832 1 3, 5, 5, 5, 5, 1, 1, 1, 1, 1,
1833 1 1, 4, 4, 2, 1, 1, 1, 1, 9, 8,
1834 1 3, 3, 1
1835 1 };
1836 1
1837
1838 357793 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1839 357793 static const yytype_int8 yydprec[] =
1840 357793 {
1841
2/6
✓ Branch 0 taken 357793 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 357793 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
357793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1847 13058147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 13058147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 13058147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 13058147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 1397281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853
2/6
✓ Branch 0 taken 1397281 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1397281 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1397281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0
1880 };
1881
1882 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1883 static const yytype_int8 yymerger[] =
1884 {
1885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1903 1048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1909 1045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1910 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1911 56484166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1915 3 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1916 8512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0
1924 };
1925
1926 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1927 in the case of predicates. */
1928 static const yybool yyimmediate[] =
1929 {
1930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1968 0, 0, 0
1969 1048 };
1970 1048
1971 1048 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1972
2/4
✓ Branch 0 taken 1048 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1048 times.
✗ Branch 3 not taken.
1048 list of conflicting reductions corresponding to action entry for
1973 state STATE-NUM in yytable. 0 means no conflicts. The list in
1974 yyconfl is terminated by a rule number of 0. */
1975 static const yytype_int8 yyconflp[] =
1976 {
1977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1982 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1992 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1993 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1994 15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1995
2/4
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
15 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1998 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2003 56493741 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2004
2/6
✓ Branch 0 taken 56493741 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 56493741 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
112987482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2006
2/2
✓ Branch 0 taken 20885559 times.
✓ Branch 1 taken 35608182 times.
56493741 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
2007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2011 104814660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2014 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2015 828572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2016 2325808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2020 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
2021
2/6
✓ Branch 0 taken 59 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
59 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2027 0, 0, 0, 0, 0, 11, 0, 0, 0, 0,
2028 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2029 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2030 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2031 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2032 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2033 17 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2035
2/6
✓ Branch 0 taken 162469 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 162469 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
162469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2041 2991910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2042 2991910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 2991910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2044 2991910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2045 2991910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2050 3300416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2051 3300416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2052 3300416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2053 3300416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2054 3300416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2056
2/6
✓ Branch 0 taken 2991928 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2991928 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2991928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2067 26796833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2068 35904662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2069 4722061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2070 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2071 67423556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2082 6605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2083 6605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2084
2/6
✓ Branch 0 taken 6605 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6605 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2090 9363047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 9363047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092
2/6
✓ Branch 0 taken 9363047 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9363047 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
9363047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2095 67423556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2097
3/8
✓ Branch 0 taken 70853 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 70853 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 70853 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
70853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099
3/8
✓ Branch 0 taken 36151 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 36151 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 36151 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
36151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 3154455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104
3/8
✓ Branch 0 taken 2861778 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2861778 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2861778 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
5723556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2106 8534475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2109 69749439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2111
3/8
✓ Branch 0 taken 236512 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 236512 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 236512 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
236512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2113
3/8
✓ Branch 0 taken 137612 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 137612 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 137612 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
137612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2114 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2115
3/8
✓ Branch 0 taken 1615268 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1615268 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1615268 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1615268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2117
3/8
✓ Branch 0 taken 77553 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 77553 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 77553 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
77553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2119
3/8
✓ Branch 0 taken 35164 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 35164 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 35164 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
35164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2122 69749439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2127 69003560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2129
3/8
✓ Branch 0 taken 441221 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 441221 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 441221 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
882442 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2131
3/8
✓ Branch 0 taken 113550 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 113550 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 113550 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
227100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2133
3/8
✓ Branch 0 taken 191108 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 191108 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 191108 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
382216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2136 65337333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2138
3/8
✓ Branch 0 taken 2243760 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2243760 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2243760 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4487520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2140
3/8
✓ Branch 0 taken 1422467 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1422467 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1422467 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
2844934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2143 64753086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2145
3/8
✓ Branch 0 taken 263555 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 263555 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 263555 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
527110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2147
3/8
✓ Branch 0 taken 320692 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 320692 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 320692 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
641384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2148 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2150 62918947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2152
3/8
✓ Branch 0 taken 711792 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 711792 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 711792 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1423584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2154
3/8
✓ Branch 0 taken 274869 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 274869 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 274869 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
549738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2156
3/8
✓ Branch 0 taken 568777 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 568777 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 568777 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1137554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2158
3/8
✓ Branch 0 taken 278701 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 278701 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 278701 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
557402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2161 62082697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2163
3/8
✓ Branch 0 taken 663099 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 663099 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 663099 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1326198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2165
3/8
✓ Branch 0 taken 149672 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 149672 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 149672 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
299344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2169
3/8
✓ Branch 0 taken 23479 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23479 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 23479 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
46958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2172 61249833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2174
3/8
✓ Branch 0 taken 832864 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 832864 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 832864 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
1665728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2176 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2177 61226350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2179
3/8
✓ Branch 0 taken 23483 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 23483 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 23483 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
46966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2182 61207391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2184
3/8
✓ Branch 0 taken 18959 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18959 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 18959 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
37918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2187 60777430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2189
3/8
✓ Branch 0 taken 429961 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 429961 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 429961 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
859922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2190 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2192 60290412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2194
3/8
✓ Branch 0 taken 487018 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 487018 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 487018 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
974036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2197 59336978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2201 953434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2202 953434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2203 953434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2204
2/6
✓ Branch 0 taken 953434 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 953434 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
953434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2208 58383544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2210
2/6
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2215 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2216 54953539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2218
3/8
✓ Branch 0 taken 2104494 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2104494 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2104494 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
4208988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2221 106634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 106634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223
3/10
✓ Branch 0 taken 106634 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 106634 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 106634 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
213268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2226 43266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2227 43266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2228
3/10
✓ Branch 0 taken 43266 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 43266 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 43266 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
86532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2231 8904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2232 8904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2233
3/10
✓ Branch 0 taken 8904 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 8904 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8904 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
17808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2236 7233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2237 7233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2238
3/10
✓ Branch 0 taken 7233 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 7233 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7233 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
14466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2241 1171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2242 1171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2243
3/10
✓ Branch 0 taken 1171 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1171 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1171 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
2342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2244 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2246 9942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2247 9942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2248
3/10
✓ Branch 0 taken 9942 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9942 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 9942 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
19884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2256 26437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2257 26437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2258
3/10
✓ Branch 0 taken 26437 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 26437 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 26437 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
52874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2262 544631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2263 544631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2264
3/10
✓ Branch 0 taken 544631 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 544631 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 544631 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
1089262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2268 1537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2269 1537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2270
3/10
✓ Branch 0 taken 1537 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1537 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1537 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
3074 0, 0, 0, 0, 0
2271 };
2272
2273 575580 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
2274 575580 0, pointed into by YYCONFLP. */
2275
3/10
✓ Branch 0 taken 575580 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 575580 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 575580 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
1151160 static const short yyconfl[] =
2276 {
2277 0, 258, 0, 259, 0, 260, 0, 261, 0, 72,
2278 175 0, 229, 0
2279 175 };
2280
3/10
✓ Branch 0 taken 175 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 175 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 175 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
350
2281
2282 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2283 If N is 0, then set CURRENT to the empty location which ends
2284 the previous symbol: RHS[0] (always defined). */
2285
2286 #ifndef YYLLOC_DEFAULT
2287 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2288 54953539 do \
2289 if (N) \
2290 { \
2291 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2292 4202568 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2293 4202568 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2294 4202568 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2295 } \
2296 else \
2297 { \
2298 (Current).first_line = (Current).last_line = \
2299 2640154 YYRHSLOC (Rhs, 0).last_line; \
2300
2/6
✓ Branch 0 taken 2640154 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2640154 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
2640154 (Current).first_column = (Current).last_column = \
2301 YYRHSLOC (Rhs, 0).last_column; \
2302 } \
2303 while (0)
2304 #endif
2305 6574
2306 6574 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
2307
1/2
✓ Branch 0 taken 6574 times.
✗ Branch 1 not taken.
6574
2308
2309 YYSTYPE yylval;
2310 YYLTYPE yylloc;
2311
2312 int yynerrs;
2313 int yychar;
2314
2315 enum { YYENOMEM = -2 };
2316 6574
2317 6574 typedef enum { yyok, yyaccept, yyabort, yyerr, yynomem } YYRESULTTAG;
2318
2/6
✓ Branch 0 taken 6574 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6574 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
6574
2319 #define YYCHK(YYE) \
2320 do { \
2321 YYRESULTTAG yychk_flag = YYE; \
2322 if (yychk_flag != yyok) \
2323 return yychk_flag; \
2324 } while (0)
2325
2326 /* YYINITDEPTH -- initial size of the parser's stacks. */
2327 #ifndef YYINITDEPTH
2328 # define YYINITDEPTH 200
2329 #endif
2330
2331 1 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2332 1 if the built-in stack extension method is used).
2333
2/6
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
1
2334 Do not make this value too large; the results are undefined if
2335 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
2336 evaluated with infinite-precision integer arithmetic. */
2337
2338 #ifndef YYMAXDEPTH
2339 # define YYMAXDEPTH 10000
2340 #endif
2341
2342 /* Minimum number of free items on the stack allowed after an
2343 allocation. This is to allow allocation and initialization
2344 to be completed by functions that call yyexpandGLRStack before the
2345 stack is expanded, thus insuring that all necessary pointers get
2346 properly redirected to new data. */
2347 #define YYHEADROOM 2
2348
2349 #ifndef YYSTACKEXPANDABLE
2350 # define YYSTACKEXPANDABLE 1
2351 #endif
2352
2353 #if YYSTACKEXPANDABLE
2354 # define YY_RESERVE_GLRSTACK(Yystack) \
2355 do { \
2356 if (Yystack->yyspaceLeft < YYHEADROOM) \
2357 yyexpandGLRStack (Yystack); \
2358 } while (0)
2359 #else
2360 # define YY_RESERVE_GLRSTACK(Yystack) \
2361 do { \
2362 if (Yystack->yyspaceLeft < YYHEADROOM) \
2363 yyMemoryExhausted (Yystack); \
2364 } while (0)
2365 #endif
2366 34152814
2367
2/6
✓ Branch 0 taken 34152814 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 34152814 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
34152814 /** State numbers. */
2368 typedef int yy_state_t;
2369 347913
2370
2/6
✓ Branch 0 taken 347913 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 347913 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
347913 /** Rule numbers. */
2371 typedef int yyRuleNum;
2372 228501
2373
4/10
✓ Branch 0 taken 228501 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 228501 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 228501 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 228501 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
228501 /** Item references. */
2374 typedef short yyItemNum;
2375 397797
2376 582007 typedef struct yyGLRState yyGLRState;
2377 45390 typedef struct yyGLRStateSet yyGLRStateSet;
2378 typedef struct yySemanticOption yySemanticOption;
2379 150240 typedef union yyGLRStackItem yyGLRStackItem;
2380
3/8
✓ Branch 0 taken 150240 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 150240 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 150240 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
150240 typedef struct yyGLRStack yyGLRStack;
2381
2382 struct yyGLRState
2383 {
2384 /** Type tag: always true. */
2385 yybool yyisState;
2386 /** Type tag for yysemantics. If true, yyval applies, otherwise
2387 * yyfirstVal applies. */
2388 yybool yyresolved;
2389 /** Number of corresponding LALR(1) machine state. */
2390 3 yy_state_t yylrState;
2391 3 /** Preceding state in this stack */
2392 3 yyGLRState* yypred;
2393
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
3 /** Source position of the last token produced by my symbol */
2394 3 YYPTRDIFF_T yyposn;
2395 397998 union {
2396 /** First in a chain of alternative reductions producing the
2397 * nonterminal corresponding to this state, threaded through
2398 * yynext. */
2399 yySemanticOption* yyfirstVal;
2400 397797 /** Semantic value for this state. */
2401
2/4
✓ Branch 0 taken 397797 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 397797 times.
397797 YYSTYPE yyval;
2402 } yysemantics;
2403 /** Source location for this state. */
2404 YYLTYPE yyloc;
2405 };
2406
2407 struct yyGLRStateSet
2408
2/6
✓ Branch 0 taken 316009 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 316009 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
316009 {
2409
2/6
✓ Branch 0 taken 265998 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 265998 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
265998 yyGLRState** yystates;
2410 /** During nondeterministic operation, yylookaheadNeeds tracks which
2411 * stacks have actually needed the current lookahead. During deterministic
2412 * operation, yylookaheadNeeds[0] is not maintained since it would merely
2413 * duplicate yychar != TOK_YYEMPTY. */
2414 yybool* yylookaheadNeeds;
2415 YYPTRDIFF_T yysize;
2416 YYPTRDIFF_T yycapacity;
2417 };
2418
2419 struct yySemanticOption
2420 {
2421 /** Type tag: always false. */
2422 yybool yyisState;
2423 /** Rule number for this reduction */
2424 yyRuleNum yyrule;
2425 /** The last RHS state in the list of states to be reduced. */
2426 yyGLRState* yystate;
2427 /** The lookahead for this reduction. */
2428 int yyrawchar;
2429 YYSTYPE yyval;
2430 YYLTYPE yyloc;
2431 /** Next sibling in chain of options. To facilitate merging,
2432 * options are chained in decreasing order by address. */
2433 yySemanticOption* yynext;
2434 };
2435
2436 /** Type of the items in the GLR stack. The yyisState field
2437 * indicates which item of the union is valid. */
2438 45390 union yyGLRStackItem {
2439 45390 yyGLRState yystate;
2440 45390 yySemanticOption yyoption;
2441 };
2442
2443 struct yyGLRStack {
2444 int yyerrState;
2445 252631 /* To compute the location of the error token. */
2446 252631 yyGLRStackItem yyerror_range[3];
2447 252631
2448 252631 YYJMP_BUF yyexception_buffer;
2449 yyGLRStackItem* yyitems;
2450 45390 yyGLRStackItem* yynextFree;
2451
2/6
✓ Branch 0 taken 45390 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 45390 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
45390 YYPTRDIFF_T yyspaceLeft;
2452 yyGLRState* yysplitPoint;
2453 yyGLRState* yylastDeleted;
2454 yyGLRStateSet yytops;
2455 };
2456
2457 #if YYSTACKEXPANDABLE
2458 static void yyexpandGLRStack (yyGLRStack* yystackp);
2459 #endif
2460
2461 _Noreturn static void
2462 56 yyFail (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root, const char* yymsg)
2463 {
2464
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yymsg != YY_NULLPTR)
2465 yyerror (root, yymsg);
2466 56 YYLONGJMP (yystackp->yyexception_buffer, 1);
2467 }
2468
2469 _Noreturn static void
2470 yyMemoryExhausted (yyGLRStack* yystackp)
2471 {
2472 YYLONGJMP (yystackp->yyexception_buffer, 2);
2473 }
2474
2475 /** Accessing symbol of state YYSTATE. */
2476 static inline yysymbol_kind_t
2477 232448 yy_accessing_symbol (yy_state_t yystate)
2478 {
2479 232448 return YY_CAST (yysymbol_kind_t, yystos[yystate]);
2480 }
2481
2482 #if 1
2483 /* The user-facing name of the symbol whose (internal) number is
2484 YYSYMBOL. No bounds checking. */
2485 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2486
2487 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2488 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2489 static const char *const yytname[] =
2490 {
2491 "\"end of file\"", "error", "\"invalid token\"", "SCRIPT", "ZCLASS",
2492 "FOR", "LOOP", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT", "RETURN",
2493 "IMPORT", "ZTRUE", "ZFALSE", "WHILE", "BREAK", "CONTINUE", "ZCONST",
2494 "DO", "TYPEDEF", "EXPECTERROR", "OPTIONVALUE", "ISINCLUDED", "DEFINE",
2495 "ENUM", "NAMESPACE", "USING", "ALWAYS", "ZASM", "INCLUDE", "INCLUDEPATH",
2496 "INCLUDEIF", "UNTIL", "UNLESS", "REPEAT", "INLINE", "INTERNAL", "STATIC",
2497 "CONSTEXPR", "NEW", "DELETE", "CASSERT", "ZAUTO", "ZVOID", "UNTYPED",
2498 "ZBOOL", "ZFLOAT", "ZCHAR", "ZLONG", "ZRGB", "COMMA", "DOT", "SEMICOLON",
2499 "SCOPERES", "COLON", "IN", "LPAREN", "RPAREN", "EMPTYBRACKETS",
2500 "LBRACKET", "RBRACKET", "LBRACE", "RBRACE", "QMARK", "ARROW",
2501 "INCREMENT", "DECREMENT", "NOT", "BITNOT", "EXPN", "TIMES", "DIVIDE",
2502 "MODULO", "PLUS", "MINUS", "LSHIFT", "RSHIFT", "LE", "LT", "GE", "GT",
2503 "EQ", "NE", "BITAND", "BITXOR", "BITOR", "AND", "OR", "XOR", "ASSIGN",
2504 "PLUSASSIGN", "MINUSASSIGN", "TIMESASSIGN", "DIVIDEASSIGN",
2505 "MODULOASSIGN", "LSHIFTASSIGN", "RSHIFTASSIGN", "BITANDASSIGN",
2506 "BITXORASSIGN", "BITORASSIGN", "ANDASSIGN", "ORASSIGN", "CAST", "RANGE",
2507 "RANGE_L", "RANGE_R", "RANGE_LR", "RANGE_N", "APPXEQUAL", "DOUBLEBANG",
2508 "PERCENT", "BITNOTASSIGN", "INVMOD", "DOUBLEADDR", "DOUBLESTAR",
2509 "HANDLE", "HANDLETOHANDLE", "ADDR", "HASH", "ENDLINE", "OPTION",
2510 "INHERIT", "IDENTIFIER", "QUOTEDSTRING", "CASESTRING", "IMPORTSTRING",
2511 "SINGLECHAR", "NUMBER", "LONGNUMBER", "$accept", "Init", "Global_List",
2512 "Global_Statement", "Trail_Comma_RBrace", "Namespace",
2513 "Namespace_Block_List", "Namespace_Statement", "Using", "AlwaysUsing",
2514 "Import", "IncludePath", "Option", "Statement_Assert", "DataTypeDef",
2515 "StandardDataTypedef", "DataType", "DataType_Mods", "DataType_Base",
2516 "ScriptTypeDef", "Data", "Data_List", "Data_Element",
2517 "Data_Element_Array_List", "Single_Data_req_assign",
2518 "Data_Element_Array_Element", "Data_Element_Array_Element_Size_List",
2519 "Function", "Function_Typeless", "Function_Heading",
2520 "FunctionTemplateList", "Function_Parameters_List",
2521 "Function_Parameters_Element", "Function_OptParams_List",
2522 "Function_VarArg_Element", "Class_Ident", "Class", "Class_Block",
2523 "Class_Block_List", "Class_Constructor", "Class_Destructor",
2524 "Class_Data", "Class_Block_Element", "Annotated_Script", "Script",
2525 "Script_Type", "Script_Block", "Script_Block_List",
2526 "Script_Block_Element", "Annotation_List", "Annotation",
2527 "Block_Statement", "Statement", "Statement_NoSemicolon",
2528 "Statement_Block", "Statement_Block_List", "Statement_If", "If_Body",
2529 "Statement_Switch", "Statement_Switch_Body", "Statement_Switch_Cases",
2530 "Statement_For", "Statement_CommaList", "Statement_For_Standard",
2531 "Statement_For_Each", "Annotated_Loop", "Statement_Loop",
2532 "Statement_Loop_Inf", "Statement_Loop_Range",
2533 "Statement_Loop_Range_Base", "Token_In", "Statement_While",
2534 "Statement_Do", "Statement_Repeat", "Statement_Return",
2535 "Statement_CompileError", "Annotated_Enum", "DataEnum", "Enum_Block",
2536 "ScopeRes", "Identifier_List", "Scoperes_Identifier_List",
2537 "Mixed_Identifier_List", "idlist_scopres", "idlist_dot",
2538 "Ambigious_Iden_List", "Identifier", "Func_Left", "Function_Call",
2539 "Function_Call_Parameters", "Expr_1", "Expr_2", "Expr_Arrow", "Expr_3",
2540 "Expr_4", "Expr_5", "Expr_6", "Expr_7", "Expr_8", "Expr_9", "Expr_10",
2541 "Expr_11", "Expr_12", "Expr_13", "Expr_14", "Expr_15", "Expr_16",
2542 "Expr_17", "Expr_18", "Expression", "Statement_Expression",
2543 "Expression_Constant", "Expression_Const_Range", "Expression_Range",
2544 "Literal", "QuotedString", "Literal_String", "Literal_Bool",
2545 "Literal_Array", "Literal_Array_Body", YY_NULLPTR
2546 };
2547
2548 static const char *
2549 yysymbol_name (yysymbol_kind_t yysymbol)
2550 {
2551 return yytname[yysymbol];
2552 }
2553 #endif
2554
2555 /** Left-hand-side symbol for rule #YYRULE. */
2556 static inline yysymbol_kind_t
2557 1912543660 yylhsNonterm (yyRuleNum yyrule)
2558 {
2559 1912543660 return YY_CAST (yysymbol_kind_t, yyr1[yyrule]);
2560 }
2561
2562 #if YYDEBUG
2563
2564 # ifndef YYFPRINTF
2565 # define YYFPRINTF fprintf
2566 # endif
2567
2568 # define YY_FPRINTF \
2569 YY_IGNORE_USELESS_CAST_BEGIN YY_FPRINTF_
2570
2571 # define YY_FPRINTF_(Args) \
2572 do { \
2573 YYFPRINTF Args; \
2574 YY_IGNORE_USELESS_CAST_END \
2575 } while (0)
2576
2577 # define YY_DPRINTF \
2578 YY_IGNORE_USELESS_CAST_BEGIN YY_DPRINTF_
2579
2580 # define YY_DPRINTF_(Args) \
2581 do { \
2582 if (yydebug) \
2583 YYFPRINTF Args; \
2584 YY_IGNORE_USELESS_CAST_END \
2585 } while (0)
2586
2587
2588 /* YYLOCATION_PRINT -- Print the location on the stream.
2589 This macro was not mandated originally: define only if we know
2590 we won't break user code: when these are the locations we know. */
2591
2592 # ifndef YYLOCATION_PRINT
2593
2594 # if defined YY_LOCATION_PRINT
2595
2596 /* Temporary convenience wrapper in case some people defined the
2597 undocumented and private YY_LOCATION_PRINT macros. */
2598 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2599
2600 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
2601
2602 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2603
2604 YY_ATTRIBUTE_UNUSED
2605 static int
2606 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2607 {
2608 int res = 0;
2609 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2610 if (0 <= yylocp->first_line)
2611 {
2612 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2613 if (0 <= yylocp->first_column)
2614 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2615 }
2616 if (0 <= yylocp->last_line)
2617 {
2618 if (yylocp->first_line < yylocp->last_line)
2619 {
2620 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2621 if (0 <= end_col)
2622 res += YYFPRINTF (yyo, ".%d", end_col);
2623 }
2624 else if (0 <= end_col && yylocp->first_column < end_col)
2625 res += YYFPRINTF (yyo, "-%d", end_col);
2626 }
2627 return res;
2628 }
2629
2630 # define YYLOCATION_PRINT yy_location_print_
2631
2632 /* Temporary convenience wrapper in case some people defined the
2633 undocumented and private YY_LOCATION_PRINT macros. */
2634 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2635
2636 # else
2637
2638 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2639 /* Temporary convenience wrapper in case some people defined the
2640 undocumented and private YY_LOCATION_PRINT macros. */
2641 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2642
2643 # endif
2644 # endif /* !defined YYLOCATION_PRINT */
2645
2646
2647
2648 /*-----------------------------------.
2649 | Print this symbol's value on YYO. |
2650 `-----------------------------------*/
2651
2652 static void
2653 yy_symbol_value_print (FILE *yyo,
2654 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2655 {
2656 FILE *yyoutput = yyo;
2657 YY_USE (yyoutput);
2658 YY_USE (yylocationp);
2659 YY_USE (root);
2660 if (!yyvaluep)
2661 return;
2662 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2663 YY_USE (yykind);
2664 YY_IGNORE_MAYBE_UNINITIALIZED_END
2665 }
2666
2667
2668 /*---------------------------.
2669 | Print this symbol on YYO. |
2670 `---------------------------*/
2671
2672 static void
2673 yy_symbol_print (FILE *yyo,
2674 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
2675 {
2676 YYFPRINTF (yyo, "%s %s (",
2677 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2678
2679 YYLOCATION_PRINT (yyo, yylocationp);
2680 YYFPRINTF (yyo, ": ");
2681 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, root);
2682 YYFPRINTF (yyo, ")");
2683 }
2684
2685 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2686 do { \
2687 if (yydebug) \
2688 { \
2689 YY_FPRINTF ((stderr, "%s ", Title)); \
2690 yy_symbol_print (stderr, Kind, Value, Location, root); \
2691 YY_FPRINTF ((stderr, "\n")); \
2692 } \
2693 } while (0)
2694
2695 static inline void
2696 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
2697 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root);
2698
2699 # define YY_REDUCE_PRINT(Args) \
2700 do { \
2701 if (yydebug) \
2702 yy_reduce_print Args; \
2703 } while (0)
2704
2705 /* Nonzero means print parse trace. It is left uninitialized so that
2706 multiple parsers can coexist. */
2707 int yydebug;
2708
2709 static void yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
2710 YY_ATTRIBUTE_UNUSED;
2711 static void yypdumpstack (yyGLRStack* yystackp)
2712 YY_ATTRIBUTE_UNUSED;
2713
2714 #else /* !YYDEBUG */
2715
2716 # define YY_DPRINTF(Args) do {} while (yyfalse)
2717 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2718 # define YY_REDUCE_PRINT(Args)
2719
2720 #endif /* !YYDEBUG */
2721
2722 #ifndef yystrlen
2723 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2724 #endif
2725
2726 #ifndef yystpcpy
2727 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2728 # define yystpcpy stpcpy
2729 # else
2730 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2731 YYDEST. */
2732 static char *
2733 yystpcpy (char *yydest, const char *yysrc)
2734 {
2735 char *yyd = yydest;
2736 const char *yys = yysrc;
2737
2738 while ((*yyd++ = *yys++) != '\0')
2739 continue;
2740
2741 return yyd - 1;
2742 }
2743 # endif
2744 #endif
2745
2746 #ifndef yytnamerr
2747 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2748 quotes and backslashes, so that it's suitable for yyerror. The
2749 heuristic is that double-quoting is unnecessary unless the string
2750 contains an apostrophe, a comma, or backslash (other than
2751 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2752 null, do not copy; instead, return the length of what the result
2753 would have been. */
2754 static YYPTRDIFF_T
2755 318 yytnamerr (char *yyres, const char *yystr)
2756 {
2757
2/2
✓ Branch 0 taken 314 times.
✓ Branch 1 taken 4 times.
318 if (*yystr == '"')
2758 {
2759 4 YYPTRDIFF_T yyn = 0;
2760 4 char const *yyp = yystr;
2761
2762 48 for (;;)
2763
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 4 times.
48 switch (*++yyp)
2764 {
2765 case '\'':
2766 case ',':
2767 goto do_not_strip_quotes;
2768
2769 case '\\':
2770 if (*++yyp != '\\')
2771 goto do_not_strip_quotes;
2772 else
2773 goto append;
2774
2775 append:
2776 default:
2777
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 22 times.
44 if (yyres)
2778 22 yyres[yyn] = *yyp;
2779 44 yyn++;
2780 44 break;
2781
2782 case '"':
2783
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if (yyres)
2784 2 yyres[yyn] = '\0';
2785 4 return yyn;
2786 }
2787 do_not_strip_quotes: ;
2788 }
2789
2790
2/2
✓ Branch 0 taken 157 times.
✓ Branch 1 taken 157 times.
314 if (yyres)
2791 157 return yystpcpy (yyres, yystr) - yyres;
2792 else
2793 157 return yystrlen (yystr);
2794 318 }
2795 #endif
2796
2797
2798 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2799 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2800 * containing the pointer to the next state in the chain. */
2801 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2802 static void
2803 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2804 {
2805 int i;
2806 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2807 for (i = yylow0-1; i >= yylow1; i -= 1)
2808 {
2809 #if YYDEBUG
2810 yyvsp[i].yystate.yylrState = s->yylrState;
2811 #endif
2812 yyvsp[i].yystate.yyresolved = s->yyresolved;
2813 if (s->yyresolved)
2814 yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval;
2815 else
2816 /* The effect of using yyval or yyloc (in an immediate rule) is
2817 * undefined. */
2818 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2819 yyvsp[i].yystate.yyloc = s->yyloc;
2820 s = yyvsp[i].yystate.yypred = s->yypred;
2821 }
2822 }
2823
2824
2825 /** If yychar is empty, fetch the next token. */
2826 static inline yysymbol_kind_t
2827 1358285552 yygetToken (int *yycharp, std::unique_ptr<ZScript::ASTFile>& root)
2828 {
2829 yysymbol_kind_t yytoken;
2830 1358285552 YY_USE (root);
2831
2/2
✓ Branch 0 taken 1020952752 times.
✓ Branch 1 taken 337332800 times.
1358285552 if (*yycharp == TOK_YYEMPTY)
2832 {
2833 337332800 YY_DPRINTF ((stderr, "Reading a token\n"));
2834 337332800 *yycharp = yylex ();
2835 337332800 }
2836
2/2
✓ Branch 0 taken 232003 times.
✓ Branch 1 taken 1358053549 times.
1358285552 if (*yycharp <= TOK_YYEOF)
2837 {
2838 232003 *yycharp = TOK_YYEOF;
2839 232003 yytoken = YYSYMBOL_YYEOF;
2840 232003 YY_DPRINTF ((stderr, "Now at end of input.\n"));
2841 232003 }
2842 else
2843 {
2844
2/4
✓ Branch 0 taken 1358053549 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1358053549 times.
✗ Branch 3 not taken.
1358053549 yytoken = YYTRANSLATE (*yycharp);
2845 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2846 }
2847 1358285552 return yytoken;
2848 }
2849
2850 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2851 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2852 * For convenience, always return YYLOW1. */
2853 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2854 YY_ATTRIBUTE_UNUSED;
2855 static inline int
2856 3947695019 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2857 {
2858
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 3947695019 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
3947695019 if (!yynormal && yylow1 < *yylow)
2859 {
2860 yyfillin (yyvsp, *yylow, yylow1);
2861 *yylow = yylow1;
2862 }
2863 3947695019 return yylow1;
2864 }
2865
2866 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2867 * and top stack item YYVSP. YYLVALP points to place to put semantic
2868 * value ($$), and yylocp points to place for location information
2869 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2870 * yyerr for YYERROR, yyabort for YYABORT, yynomem for YYNOMEM. */
2871 static YYRESULTTAG
2872 1912519773 yyuserAction (yyRuleNum yyrule, int yyrhslen, yyGLRStackItem* yyvsp,
2873 yyGLRStack* yystackp, YYPTRDIFF_T yyk,
2874 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
2875 {
2876 1912519773 const yybool yynormal YY_ATTRIBUTE_UNUSED = yystackp->yysplitPoint == YY_NULLPTR;
2877 1912519773 int yylow = 1;
2878 YY_USE (yyvalp);
2879 YY_USE (yylocp);
2880 1912519773 YY_USE (root);
2881 YY_USE (yyk);
2882 YY_USE (yyrhslen);
2883 # undef yyerrok
2884 # define yyerrok (yystackp->yyerrState = 0)
2885 # undef YYACCEPT
2886 # define YYACCEPT return yyaccept
2887 # undef YYABORT
2888 # define YYABORT return yyabort
2889 # undef YYNOMEM
2890 # define YYNOMEM return yynomem
2891 # undef YYERROR
2892 # define YYERROR return yyerrok, yyerr
2893 # undef YYRECOVERING
2894 # define YYRECOVERING() (yystackp->yyerrState != 0)
2895 # undef yyclearin
2896 # define yyclearin (yychar = TOK_YYEMPTY)
2897 # undef YYFILL
2898 # define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
2899 # undef YYBACKUP
2900 # define YYBACKUP(Token, Value) \
2901 return yyerror (root, YY_("syntax error: cannot back up")), \
2902 yyerrok, yyerr
2903
2904
2/2
✓ Branch 0 taken 1912098748 times.
✓ Branch 1 taken 421025 times.
1912519773 if (yyrhslen == 0)
2905 421025 *yyvalp = yyval_default;
2906 else
2907 1912098748 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;
2908 /* Default location. */
2909
2/2
✓ Branch 0 taken 1912098748 times.
✓ Branch 1 taken 421025 times.
1912519773 YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen);
2910 1912519773 yystackp->yyerror_range[1].yystate.yyloc = *yylocp;
2911 /* If yyk == -1, we are running a deferred action on a temporary
2912 stack. In that case, YY_REDUCE_PRINT must not play with YYFILL,
2913 so pretend the stack is "normal". */
2914 YY_REDUCE_PRINT ((yynormal || yyk == -1, yyvsp, yyk, yyrule, root));
2915
281/382
✓ Branch 0 taken 28404499 times.
✓ Branch 1 taken 1965 times.
✓ Branch 2 taken 24444800 times.
✓ Branch 3 taken 2248854 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 56291 times.
✓ Branch 6 taken 63376 times.
✓ Branch 7 taken 4 times.
✓ Branch 8 taken 2875 times.
✓ Branch 9 taken 27859605 times.
✓ Branch 10 taken 14257416 times.
✓ Branch 11 taken 14976 times.
✓ Branch 12 taken 2800859 times.
✓ Branch 13 taken 271647 times.
✓ Branch 14 taken 39120 times.
✓ Branch 15 taken 1666600 times.
✓ Branch 16 taken 484244 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 3555 times.
✓ Branch 20 taken 920 times.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 1756637 times.
✓ Branch 24 taken 157044 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 5 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 116002 times.
✓ Branch 32 taken 4459 times.
✓ Branch 33 taken 116057 times.
✓ Branch 34 taken 114435 times.
✓ Branch 35 taken 7568 times.
✓ Branch 36 taken 145454 times.
✓ Branch 37 taken 2496 times.
✓ Branch 38 taken 3490 times.
✓ Branch 39 taken 10 times.
✓ Branch 40 taken 39116 times.
✓ Branch 41 taken 1396305 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 6 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 8 times.
✓ Branch 46 taken 1442663 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 8507 times.
✗ Branch 49 not taken.
✓ Branch 50 taken 8508 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 939 times.
✓ Branch 53 taken 39 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 350 times.
✓ Branch 56 taken 28 times.
✓ Branch 57 taken 28 times.
✓ Branch 58 taken 29 times.
✓ Branch 59 taken 1 times.
✓ Branch 60 taken 5 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 7 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 37803 times.
✓ Branch 65 taken 76632 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 1965 times.
✓ Branch 68 taken 4467 times.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 4 times.
✓ Branch 75 taken 9 times.
✓ Branch 76 taken 145493 times.
✓ Branch 77 taken 145493 times.
✓ Branch 78 taken 409695 times.
✓ Branch 79 taken 36782185 times.
✓ Branch 80 taken 2073939 times.
✓ Branch 81 taken 34708246 times.
✓ Branch 82 taken 30 times.
✓ Branch 83 taken 725832 times.
✓ Branch 84 taken 220893 times.
✓ Branch 85 taken 1249436 times.
✓ Branch 86 taken 8870984 times.
✓ Branch 87 taken 1122945 times.
✓ Branch 88 taken 60430 times.
✓ Branch 89 taken 9990 times.
✓ Branch 90 taken 24521645 times.
✓ Branch 91 taken 2496 times.
✓ Branch 92 taken 1192256 times.
✓ Branch 93 taken 27658718 times.
✓ Branch 94 taken 27658718 times.
✓ Branch 95 taken 349075 times.
✓ Branch 96 taken 42117021 times.
✓ Branch 97 taken 5 times.
✓ Branch 98 taken 50178 times.
✓ Branch 99 taken 298897 times.
✗ Branch 100 not taken.
✓ Branch 101 taken 50178 times.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✓ Branch 104 taken 580736 times.
✓ Branch 105 taken 2220136 times.
✓ Branch 106 taken 620672 times.
✓ Branch 107 taken 1 times.
✓ Branch 108 taken 2810317 times.
✓ Branch 109 taken 30545 times.
✓ Branch 110 taken 30545 times.
✓ Branch 111 taken 1878 times.
✓ Branch 112 taken 3350232 times.
✓ Branch 113 taken 2309559 times.
✓ Branch 114 taken 238022 times.
✓ Branch 115 taken 939 times.
✓ Branch 116 taken 292342 times.
✓ Branch 117 taken 6170402 times.
✓ Branch 118 taken 238022 times.
✓ Branch 119 taken 939 times.
✓ Branch 120 taken 39121 times.
✓ Branch 121 taken 39115 times.
✓ Branch 122 taken 5 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 840 times.
✓ Branch 125 taken 4 times.
✓ Branch 126 taken 10 times.
✗ Branch 127 not taken.
✓ Branch 128 taken 39106 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 39936 times.
✓ Branch 131 taken 39946 times.
✓ Branch 132 taken 4 times.
✓ Branch 133 taken 1182366 times.
✓ Branch 134 taken 1182366 times.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✓ Branch 138 taken 38 times.
✓ Branch 139 taken 3556 times.
✓ Branch 140 taken 6057 times.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 143 taken 3556 times.
✗ Branch 144 not taken.
✓ Branch 145 taken 79 times.
✓ Branch 146 taken 4385 times.
✗ Branch 147 not taken.
✓ Branch 148 taken 4 times.
✓ Branch 149 taken 6 times.
✓ Branch 150 taken 153 times.
✓ Branch 151 taken 41 times.
✓ Branch 152 taken 192 times.
✓ Branch 153 taken 2 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✓ Branch 158 taken 2583187 times.
✓ Branch 159 taken 1673034 times.
✗ Branch 160 not taken.
✓ Branch 161 taken 943 times.
✗ Branch 162 not taken.
✓ Branch 163 taken 3804182 times.
✓ Branch 164 taken 1035301 times.
✓ Branch 165 taken 384552 times.
✓ Branch 166 taken 10631 times.
✓ Branch 167 taken 659 times.
✗ Branch 168 not taken.
✓ Branch 169 taken 3841673 times.
✓ Branch 170 taken 809196 times.
✗ Branch 171 not taken.
✓ Branch 172 taken 44440 times.
✗ Branch 173 not taken.
✓ Branch 174 taken 13023 times.
✓ Branch 175 taken 358089 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 398385 times.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✓ Branch 190 taken 12626 times.
✗ Branch 191 not taken.
✓ Branch 192 taken 3255217 times.
✓ Branch 193 taken 220 times.
✓ Branch 194 taken 5561005 times.
✗ Branch 195 not taken.
✓ Branch 196 taken 5387124 times.
✓ Branch 197 taken 8 times.
✓ Branch 198 taken 1675992 times.
✓ Branch 199 taken 80645 times.
✓ Branch 200 taken 5 times.
✗ Branch 201 not taken.
✓ Branch 202 taken 1325927 times.
✓ Branch 203 taken 430705 times.
✓ Branch 204 taken 157044 times.
✓ Branch 205 taken 1974820 times.
✓ Branch 206 taken 157044 times.
✓ Branch 207 taken 85852 times.
✓ Branch 208 taken 1881 times.
✓ Branch 209 taken 940 times.
✗ Branch 210 not taken.
✓ Branch 211 taken 1989974 times.
✓ Branch 212 taken 5634 times.
✗ Branch 213 not taken.
✓ Branch 214 taken 136256 times.
✓ Branch 215 taken 384547 times.
✗ Branch 216 not taken.
✓ Branch 217 taken 384550 times.
✓ Branch 218 taken 384546 times.
✓ Branch 219 taken 1 times.
✓ Branch 220 taken 5 times.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 225 taken 1 times.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✓ Branch 228 taken 1 times.
✗ Branch 229 not taken.
✓ Branch 230 taken 1 times.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✓ Branch 235 taken 6 times.
✗ Branch 236 not taken.
✓ Branch 237 taken 10626 times.
✗ Branch 238 not taken.
✓ Branch 239 taken 5 times.
✗ Branch 240 not taken.
✓ Branch 241 taken 653 times.
✗ Branch 242 not taken.
✓ Branch 243 taken 6 times.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✓ Branch 246 taken 3754318 times.
✓ Branch 247 taken 87356 times.
✗ Branch 248 not taken.
✓ Branch 249 taken 2 times.
✓ Branch 250 taken 1397279 times.
✓ Branch 251 taken 1039487 times.
✓ Branch 252 taken 1 times.
✓ Branch 253 taken 357793 times.
✓ Branch 254 taken 13058147 times.
✓ Branch 255 taken 1397281 times.
✓ Branch 256 taken 1048 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 1045 times.
✓ Branch 259 taken 15 times.
✓ Branch 260 taken 56484166 times.
✓ Branch 261 taken 3 times.
✓ Branch 262 taken 8512 times.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✓ Branch 268 taken 1048 times.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✓ Branch 271 taken 15 times.
✓ Branch 272 taken 56493741 times.
✓ Branch 273 taken 104814660 times.
✓ Branch 274 taken 828572 times.
✓ Branch 275 taken 2325808 times.
✓ Branch 276 taken 59 times.
✓ Branch 277 taken 17 times.
✓ Branch 278 taken 162469 times.
✓ Branch 279 taken 2991910 times.
✓ Branch 280 taken 3300416 times.
✓ Branch 281 taken 2991928 times.
✓ Branch 282 taken 26796833 times.
✓ Branch 283 taken 35904662 times.
✓ Branch 284 taken 4722061 times.
✓ Branch 285 taken 67423556 times.
✓ Branch 286 taken 6605 times.
✓ Branch 287 taken 9363047 times.
✓ Branch 288 taken 67423556 times.
✓ Branch 289 taken 70853 times.
✓ Branch 290 taken 36151 times.
✓ Branch 291 taken 3154455 times.
✓ Branch 292 taken 2861778 times.
✓ Branch 293 taken 8534475 times.
✓ Branch 294 taken 69749439 times.
✓ Branch 295 taken 236512 times.
✓ Branch 296 taken 137612 times.
✓ Branch 297 taken 1615268 times.
✓ Branch 298 taken 77553 times.
✓ Branch 299 taken 35164 times.
✓ Branch 300 taken 69749439 times.
✗ Branch 301 not taken.
✓ Branch 302 taken 69003560 times.
✓ Branch 303 taken 441221 times.
✓ Branch 304 taken 113550 times.
✓ Branch 305 taken 191108 times.
✓ Branch 306 taken 65337333 times.
✓ Branch 307 taken 2243760 times.
✓ Branch 308 taken 1422467 times.
✓ Branch 309 taken 64753086 times.
✓ Branch 310 taken 263555 times.
✓ Branch 311 taken 320692 times.
✓ Branch 312 taken 62918947 times.
✓ Branch 313 taken 711792 times.
✓ Branch 314 taken 274869 times.
✓ Branch 315 taken 568777 times.
✓ Branch 316 taken 278701 times.
✓ Branch 317 taken 62082697 times.
✓ Branch 318 taken 663099 times.
✓ Branch 319 taken 149672 times.
✗ Branch 320 not taken.
✓ Branch 321 taken 23479 times.
✓ Branch 322 taken 61249833 times.
✓ Branch 323 taken 832864 times.
✓ Branch 324 taken 61226350 times.
✓ Branch 325 taken 23483 times.
✓ Branch 326 taken 61207391 times.
✓ Branch 327 taken 18959 times.
✓ Branch 328 taken 60777430 times.
✓ Branch 329 taken 429961 times.
✓ Branch 330 taken 60290412 times.
✓ Branch 331 taken 487018 times.
✓ Branch 332 taken 59336978 times.
✓ Branch 333 taken 953434 times.
✓ Branch 334 taken 58383544 times.
✓ Branch 335 taken 3 times.
✓ Branch 336 taken 54953539 times.
✓ Branch 337 taken 2104494 times.
✓ Branch 338 taken 106634 times.
✓ Branch 339 taken 43266 times.
✓ Branch 340 taken 8904 times.
✓ Branch 341 taken 7233 times.
✓ Branch 342 taken 1171 times.
✓ Branch 343 taken 9942 times.
✗ Branch 344 not taken.
✓ Branch 345 taken 26437 times.
✓ Branch 346 taken 544631 times.
✓ Branch 347 taken 1537 times.
✓ Branch 348 taken 575580 times.
✓ Branch 349 taken 175 times.
✗ Branch 350 not taken.
✓ Branch 351 taken 54953539 times.
✓ Branch 352 taken 4202568 times.
✓ Branch 353 taken 2640154 times.
✓ Branch 354 taken 6574 times.
✓ Branch 355 taken 6574 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✓ Branch 358 taken 1 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✓ Branch 364 taken 34152814 times.
✓ Branch 365 taken 347913 times.
✓ Branch 366 taken 228501 times.
✓ Branch 367 taken 397797 times.
✓ Branch 368 taken 582007 times.
✓ Branch 369 taken 45390 times.
✓ Branch 370 taken 150240 times.
✗ Branch 371 not taken.
✓ Branch 372 taken 3 times.
✓ Branch 373 taken 397998 times.
✓ Branch 374 taken 397797 times.
✓ Branch 375 taken 316009 times.
✓ Branch 376 taken 265998 times.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✓ Branch 379 taken 45390 times.
✓ Branch 380 taken 252631 times.
✓ Branch 381 taken 45390 times.
1912519773 switch (yyrule)
2916 {
2917 case 2: /* Init: Global_List */
2918 #line 305 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2919 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2920 #line 2921 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2921 break;
2922
2923 case 3: /* Global_List: Global_List Global_Statement */
2924 #line 311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2925 {
2926 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2927 root->addDeclaration(declaration);}
2928 #line 2929 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2929 break;
2930
2931 case 4: /* Global_List: Global_List Option */
2932 #line 314 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2933 {
2934 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
2935 root->options.push_back(option);
2936 if (root->hasDeclarations())
2937 yywarn("WARNING: Options should come before everything else.");}
2938 #line 2939 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2939 break;
2940
2941 case 5: /* Global_List: %empty */
2942 #line 319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2943 {root.reset(new ASTFile(noloc));}
2944 #line 2945 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2945 break;
2946
2947 case 6: /* Global_Statement: Import */
2948 #line 323 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2949 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2950 #line 2951 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2951 break;
2952
2953 case 7: /* Global_Statement: IncludePath */
2954 #line 324 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2955 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2956 #line 2957 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2957 break;
2958
2959 case 8: /* Global_Statement: Namespace */
2960 #line 325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2961 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2962 #line 2963 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2963 break;
2964
2965 case 9: /* Global_Statement: DataTypeDef SEMICOLON */
2966 #line 326 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2967 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2968 #line 2969 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2969 break;
2970
2971 case 10: /* Global_Statement: ScriptTypeDef SEMICOLON */
2972 #line 327 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2973 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2974 #line 2975 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2975 break;
2976
2977 case 11: /* Global_Statement: Data SEMICOLON */
2978 #line 328 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2979 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
2980 #line 2981 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2981 break;
2982
2983 case 12: /* Global_Statement: Function */
2984 #line 329 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2985 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2986 #line 2987 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2987 break;
2988
2989 case 13: /* Global_Statement: Script */
2990 #line 330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2991 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2992 #line 2993 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2993 break;
2994
2995 case 14: /* Global_Statement: Annotated_Script */
2996 #line 331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
2997 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
2998 #line 2999 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
2999 break;
3000
3001 case 15: /* Global_Statement: Class */
3002 #line 332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3003 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3004 #line 3005 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3005 break;
3006
3007 case 16: /* Global_Statement: Annotated_Enum SEMICOLON */
3008 #line 333 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3009 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3010 #line 3011 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3011 break;
3012
3013 case 17: /* Global_Statement: Using SEMICOLON */
3014 #line 334 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3015 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3016 #line 3017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3017 break;
3018
3019 case 18: /* Global_Statement: AlwaysUsing SEMICOLON */
3020 #line 335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3021 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3022 #line 3023 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3023 break;
3024
3025 case 19: /* Global_Statement: Statement_Assert SEMICOLON */
3026 #line 336 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3027 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3028 #line 3029 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3029 break;
3030
3031 case 20: /* Global_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Global_Statement */
3032 #line 337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3033 {
3034 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3035 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3036 declaration->compileErrorCatches.push_back(errorId);
3037 (*yyvalp) = declaration;}
3038 #line 3039 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3039 break;
3040
3041 case 21: /* Trail_Comma_RBrace: COMMA RBRACE */
3042 #line 345 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3043 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3044 #line 3045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3045 break;
3046
3047 case 22: /* Trail_Comma_RBrace: RBRACE */
3048 #line 346 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3049 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3050 #line 3051 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3051 break;
3052
3053 case 23: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE RBRACE */
3054 #line 352 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3055 {
3056 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3057 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3058 namesp->identifier = idens->componentNodes.front()->clone();
3059 if (!ParserHelper::isValidIdentifier(namesp->getName()))
3060 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,namesp->getName().c_str());
3061 auto& components = idens->componentNodes;
3062 if(components.size() > 1)
3063 for(auto it = components.begin() + 1;
3064 it != components.end(); ++it)
3065 {
3066 ASTNamespace* subsp = new ASTNamespace((*yylocp));
3067 subsp->identifier = (*it)->clone();
3068 if (!ParserHelper::isValidIdentifier(subsp->getName()))
3069 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,subsp->getName().c_str());
3070 namesp->namespaces.push_back(subsp);
3071 }
3072 delete idens;
3073 (*yyvalp) = namesp;
3074 }
3075 #line 3076 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3076 break;
3077
3078 case 24: /* Namespace: NAMESPACE Scoperes_Identifier_List LBRACE Namespace_Block_List RBRACE */
3079 #line 372 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3080 {
3081 ASTExprIdentifier* idens = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3082 auto& components = idens->componentNodes;
3083 int32_t size = components.size();
3084 if(size == 1)
3085 {
3086 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3087 namesp->identifier = components.front()->clone();
3088 namesp->location = (*yylocp);
3089 delete idens;
3090 (*yyvalp) = namesp;
3091 }
3092 else if(size == 2)
3093 {
3094 ASTNamespace* top = new ASTNamespace((*yylocp));
3095 top->identifier = components.front()->clone();
3096 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3097 namesp->identifier = components[1]->clone();
3098 namesp->location = (*yylocp);
3099 top->namespaces.push_back(namesp);
3100 delete idens;
3101 (*yyvalp) = top;
3102 }
3103 else
3104 {
3105 ASTNamespace* top = new ASTNamespace((*yylocp));
3106 top->identifier = components.front()->clone();
3107 ASTNamespace* temp = top;
3108 ASTNamespace* temp2;
3109 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3110 namesp->identifier = components.back()->clone();
3111 components.pop_back();
3112 namesp->location = (*yylocp);
3113 for(auto it = components.begin() + 1;
3114 it != components.end(); ++it)
3115 {
3116 temp2 = new ASTNamespace((*yylocp));
3117 temp->identifier = (*it)->clone();
3118 temp->namespaces.push_back(temp2);
3119 temp = temp2;
3120 }
3121 temp->namespaces.push_back(namesp);
3122 delete idens;
3123 (*yyvalp) = top;
3124 }
3125
3126 auto ns = (ASTNamespace*)(*yyvalp);
3127 if (!ParserHelper::isValidIdentifier(ns->getName()))
3128 yyerrmsg("ERROR: invalid identifier",idens->location.first_line,idens->location.first_column,ns->getName().c_str());
3129 }
3130 #line 3131 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3131 break;
3132
3133 case 25: /* Namespace_Block_List: Namespace_Block_List Namespace_Statement */
3134 #line 425 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3135 {
3136 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3137 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3138 namesp->addDeclaration(*declaration);
3139 namesp->location = (*yylocp);
3140 (*yyvalp) = namesp;}
3141 #line 3142 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3142 break;
3143
3144 case 26: /* Namespace_Block_List: Namespace_Block_List Option */
3145 #line 431 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3146 {
3147 ASTNamespace* namesp = (ASTNamespace*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3148 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3149 namesp->options.push_back(option);
3150 namesp->location = (*yylocp);
3151 (*yyvalp) = namesp;
3152 if (!namesp->variables.empty()
3153 || !namesp->functions.empty()
3154 || !namesp->dataTypes.empty()
3155 || !namesp->scriptTypes.empty()) {
3156 yywarn("WARNING: Options should come before everything else.");}}
3157 #line 3158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3158 break;
3159
3160 case 27: /* Namespace_Block_List: Namespace_Statement */
3161 #line 442 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3162 {
3163 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3164 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3165 namesp->addDeclaration(*declaration);
3166 (*yyvalp) = namesp;}
3167 #line 3168 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3168 break;
3169
3170 case 28: /* Namespace_Block_List: Option */
3171 #line 447 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3172 {
3173 ASTNamespace* namesp = new ASTNamespace((*yylocp));
3174 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3175 namesp->options.push_back(option);
3176 (*yyvalp) = namesp;}
3177 #line 3178 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3178 break;
3179
3180 case 29: /* Namespace_Statement: Namespace */
3181 #line 455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3182 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3183 #line 3184 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3184 break;
3185
3186 case 30: /* Namespace_Statement: DataTypeDef SEMICOLON */
3187 #line 456 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3188 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3189 #line 3190 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3190 break;
3191
3192 case 31: /* Namespace_Statement: ScriptTypeDef SEMICOLON */
3193 #line 457 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3194 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3195 #line 3196 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3196 break;
3197
3198 case 32: /* Namespace_Statement: Data SEMICOLON */
3199 #line 458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3200 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3201 #line 3202 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3202 break;
3203
3204 case 33: /* Namespace_Statement: Function */
3205 #line 459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3206 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3207 #line 3208 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3208 break;
3209
3210 case 34: /* Namespace_Statement: Script */
3211 #line 460 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3212 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3213 #line 3214 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3214 break;
3215
3216 case 35: /* Namespace_Statement: Annotated_Script */
3217 #line 461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3218 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3219 #line 3220 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3220 break;
3221
3222 case 36: /* Namespace_Statement: Class */
3223 #line 462 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3224 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3225 #line 3226 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3226 break;
3227
3228 case 37: /* Namespace_Statement: Annotated_Enum SEMICOLON */
3229 #line 463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3230 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3231 #line 3232 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3232 break;
3233
3234 case 38: /* Namespace_Statement: Using SEMICOLON */
3235 #line 464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3236 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3237 #line 3238 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3238 break;
3239
3240 case 39: /* Namespace_Statement: Statement_Assert SEMICOLON */
3241 #line 465 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3242 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3243 #line 3244 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3244 break;
3245
3246 case 40: /* Namespace_Statement: EXPECTERROR LPAREN Expression_Constant RPAREN Namespace_Statement */
3247 #line 466 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3248 {
3249 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3250 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3251 declaration->compileErrorCatches.push_back(errorId);
3252 (*yyvalp) = declaration;}
3253 #line 3254 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3254 break;
3255
3256 case 41: /* Using: USING NAMESPACE Scoperes_Identifier_List */
3257 #line 476 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3258 {
3259 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3260 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp));
3261 }
3262 #line 3263 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3263 break;
3264
3265 case 42: /* AlwaysUsing: ALWAYS USING NAMESPACE Scoperes_Identifier_List */
3266 #line 482 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3267 {
3268 ASTExprIdentifier* idlist = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3269 (*yyvalp) = new ASTUsingDecl(idlist, (*yylocp), true);
3270 }
3271 #line 3272 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3272 break;
3273
3274 case 43: /* Import: IMPORT IMPORTSTRING */
3275 #line 491 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3276 {
3277 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3278 (*yyvalp) = new ASTImportDecl(str, (*yylocp));
3279 }
3280 #line 3281 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3281 break;
3282
3283 case 44: /* Import: HASH INCLUDE IMPORTSTRING */
3284 #line 495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3285 {
3286 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3287 (*yyvalp) = new ASTImportDecl(str, (*yylocp), true);
3288 }
3289 #line 3290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3290 break;
3291
3292 case 45: /* Import: HASH INCLUDEIF LPAREN Expression_Constant COMMA IMPORTSTRING RPAREN */
3293 #line 499 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3294 {
3295 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3296 ASTExprConst* cond = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3297 ASTImportDecl* decl = new ASTImportDecl(str, (*yylocp), true);
3298 (*yyvalp) = new ASTImportCondDecl(cond, decl, (*yylocp));
3299 }
3300 #line 3301 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3301 break;
3302
3303 case 46: /* IncludePath: HASH INCLUDEPATH IMPORTSTRING */
3304 #line 508 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3305 {
3306 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3307 (*yyvalp) = new ASTIncludePath(str->getValue(), (*yylocp));
3308 delete str;}
3309 #line 3310 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3310 break;
3311
3312 case 47: /* Option: HASH OPTION IDENTIFIER Expression_Constant ENDLINE */
3313 #line 518 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3314 {
3315 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3316 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3317 (*yyvalp) = new ASTSetOption(name->getValue(), expr, (*yylocp));
3318 delete name;}
3319 #line 3320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3320 break;
3321
3322 case 48: /* Option: HASH OPTION IDENTIFIER INHERIT ENDLINE */
3323 #line 524 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3324 {
3325 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3326 (*yyvalp) = new ASTSetOption(
3327 name->getValue(), CompileOptionSetting::Inherit, (*yylocp));
3328 delete name;}
3329 #line 3330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3330 break;
3331
3332 case 49: /* Option: HASH OPTION IDENTIFIER DEFAULT ENDLINE */
3333 #line 529 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3334 {
3335 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3336 (*yyvalp) = new ASTSetOption(
3337 name->getValue(), CompileOptionSetting::Default, (*yylocp));
3338 delete name;}
3339 #line 3340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3340 break;
3341
3342 case 50: /* Option: HASH OPTION DEFAULT Expression_Constant ENDLINE */
3343 #line 534 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3344 {
3345 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3346 (*yyvalp) = new ASTSetOption("default", expr, (*yylocp));}
3347 #line 3348 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3348 break;
3349
3350 case 51: /* Option: HASH OPTION DEFAULT INHERIT ENDLINE */
3351 #line 537 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3352 {
3353 (*yyvalp) = new ASTSetOption(
3354 "default", CompileOptionSetting::Inherit, (*yylocp));}
3355 #line 3356 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3356 break;
3357
3358 case 52: /* Option: HASH OPTION DEFAULT DEFAULT ENDLINE */
3359 #line 540 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3360 {
3361 (*yyvalp) = new ASTSetOption(
3362 "default", CompileOptionSetting::Default, (*yylocp));}
3363 #line 3364 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3364 break;
3365
3366 case 53: /* Statement_Assert: CASSERT LPAREN Expression_Constant RPAREN */
3367 #line 549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3368 {
3369 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, NULL, (*yylocp));
3370 }
3371 #line 3372 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3372 break;
3373
3374 case 54: /* Statement_Assert: CASSERT LPAREN Expression_Constant COMMA QuotedString RPAREN */
3375 #line 552 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3376 {
3377 (*yyvalp) = new ASTAssert((ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));
3378 }
3379 #line 3380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3380 break;
3381
3382 case 55: /* DataTypeDef: StandardDataTypedef */
3383 #line 560 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3384 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3385 #line 3386 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3386 break;
3387
3388 case 56: /* StandardDataTypedef: TYPEDEF DataType IDENTIFIER */
3389 #line 563 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3390 {
3391 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3392 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3393 (*yyvalp) = new ASTDataTypeDef(type, name->getValue(), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yyloc));
3394 delete name;}
3395 #line 3396 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3396 break;
3397
3398 case 57: /* DataType: DataType EMPTYBRACKETS */
3399 #line 571 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3400 {
3401 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3402 ++dtype->becomeArray;
3403 (*yyvalp) = dtype;
3404 }
3405 #line 3406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3406 break;
3407
3408 case 58: /* DataType: DataType_Mods */
3409 #line 576 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3410 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3411 #line 3412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3412 break;
3413
3414 case 59: /* DataType_Mods: ZCONST DataType_Base */
3415 #line 580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3416 {
3417 ASTDataType* dtype = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3418 ++dtype->constant_; //Increment the number of `const` keywords. If >1, this will produce an error later.
3419 (*yyvalp) = dtype;
3420 }
3421 #line 3422 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3422 break;
3423
3424 case 60: /* DataType_Mods: DataType_Base */
3425 #line 585 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3426 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3427 #line 3428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3428 break;
3429
3430 case 61: /* DataType_Base: ZAUTO */
3431 #line 590 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3432 {(*yyvalp) = new ASTDataType(DataType::ZAUTO, (*yylocp));}
3433 #line 3434 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3434 break;
3435
3436 case 62: /* DataType_Base: ZVOID */
3437 #line 591 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3438 {(*yyvalp) = new ASTDataType(DataType::ZVOID, (*yylocp));}
3439 #line 3440 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3440 break;
3441
3442 case 63: /* DataType_Base: UNTYPED */
3443 #line 592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3444 {(*yyvalp) = new ASTDataType(DataType::UNTYPED, (*yylocp));}
3445 #line 3446 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3446 break;
3447
3448 case 64: /* DataType_Base: ZBOOL */
3449 #line 593 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3450 {(*yyvalp) = new ASTDataType(DataType::BOOL, (*yylocp));}
3451 #line 3452 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3452 break;
3453
3454 case 65: /* DataType_Base: ZFLOAT */
3455 #line 594 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3456 {(*yyvalp) = new ASTDataType(DataType::FLOAT, (*yylocp));}
3457 #line 3458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3458 break;
3459
3460 case 66: /* DataType_Base: ZCHAR */
3461 #line 595 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3462 {(*yyvalp) = new ASTDataType(DataType::CHAR, (*yylocp));}
3463 #line 3464 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3464 break;
3465
3466 case 67: /* DataType_Base: ZLONG */
3467 #line 596 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3468 {(*yyvalp) = new ASTDataType(DataType::LONG, (*yylocp));}
3469 #line 3470 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3470 break;
3471
3472 case 68: /* DataType_Base: ZRGB */
3473 #line 597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3474 {(*yyvalp) = new ASTDataType(DataType::RGBDATA, (*yylocp));}
3475 #line 3476 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3476 break;
3477
3478 case 69: /* DataType_Base: Identifier_List */
3479 #line 599 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3480 {
3481 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3482 std::string comment = std::move(iden->doc_comment);
3483 ASTDataType* datatype = new ASTDataType(new DataTypeUnresolved(iden), (*yylocp));
3484 datatype->doc_comment = std::move(comment);
3485 (*yyvalp) = datatype;
3486 }
3487 #line 3488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3488 break;
3489
3490 case 70: /* ScriptTypeDef: SCRIPT TYPEDEF Script_Type IDENTIFIER */
3491 #line 608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3492 {
3493 ASTScriptType* oldType = static_cast<ASTScriptType*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval);
3494 ASTString* newName = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3495 (*yyvalp) = new ASTScriptTypeDef(oldType, newName->getValue(), (*yylocp));
3496 delete newName;}
3497 #line 3498 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3498 break;
3499
3500 case 71: /* Data: INTERNAL Data */
3501 #line 619 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3502 {
3503 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3504 if (list->internal)
3505 yyerrmsg("internal modifier used twice");
3506 list->internal = true;
3507 (*yyvalp) = list;}
3508 #line 3509 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3509 break;
3510
3511 case 72: /* Data: DataType Data_List */
3512 #line 625 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3513 {
3514 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3515 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3516 list->baseType = type;
3517 if (!type->doc_comment.empty())
3518 list->doc_comment = std::move(type->doc_comment);
3519 list->location = (*yylocp);
3520 (*yyvalp) = list;}
3521 #line 3522 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3522 break;
3523
3524 case 73: /* Data_List: Data_List COMMA Data_Element */
3525 #line 636 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3526 {
3527 ASTDataDeclList* list = (ASTDataDeclList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3528 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3529 list->addDeclaration(element);
3530 list->location = (*yylocp);
3531 (*yyvalp) = list;}
3532 #line 3533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3533 break;
3534
3535 case 74: /* Data_List: Data_Element */
3536 #line 642 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3537 {
3538 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3539 ASTDataDeclList* list = new ASTDataDeclList((*yylocp));
3540 list->addDeclaration(element);
3541 if (!element->doc_comment.empty())
3542 list->doc_comment = std::move(element->doc_comment);
3543 (*yyvalp) = list;}
3544 #line 3545 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3545 break;
3546
3547 case 75: /* Data_Element: Data_Element_Array_List ASSIGN Expression */
3548 #line 652 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3549 {
3550 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3551 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3552 element->setInitializer(initializer);
3553 element->location = (*yylocp);
3554 (*yyvalp) = element;}
3555 #line 3556 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3556 break;
3557
3558 case 76: /* Data_Element: Data_Element_Array_List */
3559 #line 658 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3560 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3561 #line 3562 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3562 break;
3563
3564 case 77: /* Data_Element_Array_List: Data_Element_Array_List Data_Element_Array_Element */
3565 #line 662 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3566 {
3567 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3568 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3569 element->extraArrays.push_back(extraArray);
3570 element->location = (*yylocp);
3571 (*yyvalp) = element;}
3572 #line 3573 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3573 break;
3574
3575 case 78: /* Data_Element_Array_List: Identifier */
3576 #line 668 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3577 {
3578 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3579 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3580 element->identifier = name;
3581 if (!ParserHelper::isValidIdentifier(name->getValue()))
3582 yyerrmsg("ERROR: invalid identifier",name->location.first_line,name->location.first_column,name->getValue().c_str());
3583 element->doc_comment = std::move(name->doc_comment);
3584 if (!first_identifier_for_line) first_identifier_for_line = element;
3585 (*yyvalp) = element;
3586 }
3587 #line 3588 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3588 break;
3589
3590 case 79: /* Single_Data_req_assign: DataType Identifier ASSIGN Expression */
3591 #line 681 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3592 {
3593 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3594 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3595 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3596 element->identifier = name;
3597 ASTExpr* initializer = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3598 element->setInitializer(initializer);
3599 element->baseType = type;
3600 element->location = (*yylocp);
3601 (*yyvalp) = element;}
3602 #line 3603 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3603 break;
3604
3605 case 80: /* Data_Element_Array_Element: LBRACKET Data_Element_Array_Element_Size_List RBRACKET */
3606 #line 694 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3607 {
3608 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3609 extraArray->location = (*yylocp);
3610 (*yyvalp) = extraArray;}
3611 #line 3612 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3612 break;
3613
3614 case 81: /* Data_Element_Array_Element: EMPTYBRACKETS */
3615 #line 698 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3616 {(*yyvalp) = new ASTDataDeclExtraArray((*yylocp));}
3617 #line 3618 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3618 break;
3619
3620 case 82: /* Data_Element_Array_Element_Size_List: Data_Element_Array_Element_Size_List COMMA Expression_Constant */
3621 #line 702 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3622 {
3623 ASTDataDeclExtraArray* extraArray = (ASTDataDeclExtraArray*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3624 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3625 extraArray->dimensions.push_back(size);
3626 extraArray->location = (*yylocp);
3627 (*yyvalp) = extraArray;}
3628 #line 3629 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3629 break;
3630
3631 case 83: /* Data_Element_Array_Element_Size_List: Expression_Constant */
3632 #line 708 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3633 {
3634 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3635 ASTDataDeclExtraArray* extraArray = new ASTDataDeclExtraArray((*yylocp));
3636 extraArray->dimensions.push_back(size);
3637 (*yyvalp) = extraArray;}
3638 #line 3639 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3639 break;
3640
3641 case 84: /* Function: CONSTEXPR Function */
3642 #line 720 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3643 {
3644 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3645 if(func->getFlag(FUNCFLAG_CONSTEXPR))
3646 {
3647 func->setFlag(FUNCFLAG_INVALID);
3648 func->invalidMsg += " Duplicate `constexpr`.";
3649 }
3650 func->setFlag(FUNCFLAG_CONSTEXPR);
3651 (*yyvalp) = func;
3652 }
3653 #line 3654 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3654 break;
3655
3656 case 85: /* Function: STATIC Function */
3657 #line 731 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3658 {
3659 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3660 if(func->getFlag(FUNCFLAG_STATIC))
3661 {
3662 func->setFlag(FUNCFLAG_INVALID);
3663 func->invalidMsg += " Duplicate `static`.";
3664 }
3665 else if(func->getFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CONSTRUCTOR))
3666 {
3667 func->setFlag(FUNCFLAG_INVALID);
3668 func->invalidMsg += " Constructors and destructors cannot be static.";
3669 }
3670 else func->setFlag(FUNCFLAG_STATIC);
3671 (*yyvalp) = func;
3672 }
3673 #line 3674 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3674 break;
3675
3676 case 86: /* Function: INLINE Function */
3677 #line 747 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3678 {
3679 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3680 if(func->getFlag(FUNCFLAG_INLINE))
3681 {
3682 func->setFlag(FUNCFLAG_INVALID);
3683 func->invalidMsg += " Duplicate `inline`.";
3684 }
3685 else func->setFlag(FUNCFLAG_INLINE);
3686 (*yyvalp) = func;
3687 }
3688 #line 3689 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3689 break;
3690
3691 case 87: /* Function: INTERNAL Function */
3692 #line 758 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3693 {
3694 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3695 if(func->getFlag(FUNCFLAG_INTERNAL))
3696 {
3697 func->setFlag(FUNCFLAG_INVALID);
3698 func->invalidMsg += " Duplicate `internal`.";
3699 }
3700 if(func->block)
3701 {
3702 func->setFlag(FUNCFLAG_INVALID);
3703 func->invalidMsg += " Internal function must not have a body.";
3704 }
3705 func->setFlag(FUNCFLAG_INTERNAL);
3706 func->prototype = false;
3707 (*yyvalp) = func;
3708 }
3709 #line 3710 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3710 break;
3711
3712 case 88: /* Function: DataType Function_Typeless */
3713 #line 774 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3714 {
3715 ASTDataType* returnType = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3716 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3717 if (!returnType->doc_comment.empty())
3718 func->doc_comment = std::move(returnType->doc_comment);
3719 func->returnType = returnType;
3720 (*yyvalp) = func;}
3721 #line 3722 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3722 break;
3723
3724 case 89: /* Function_Typeless: Function_Heading Statement_Block */
3725 #line 785 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3726 {
3727 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3728 func->block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3729 (*yyvalp) = func;}
3730 #line 3731 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3731 break;
3732
3733 case 90: /* Function_Typeless: Function_Heading SEMICOLON */
3734 #line 789 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3735 {
3736 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3737 func->prototype = true;
3738 func->defaultReturn = new ASTExprConst(new ASTExprCast(new ASTDataType(DataType::CUNTYPED, (*yylocp)), new ASTNumberLiteral(new ASTFloat(0, 0, (*yylocp)), (*yylocp)), (*yylocp)), (*yylocp));
3739 (*yyvalp) = func;}
3740 #line 3741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3741 break;
3742
3743 case 91: /* Function_Typeless: Function_Heading COLON DEFAULT Expression_Constant SEMICOLON */
3744 #line 794 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3745 {
3746 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3747 func->prototype = true;
3748 func->defaultReturn = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3749 (*yyvalp) = func;}
3750 #line 3751 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3751 break;
3752
3753 case 92: /* Function_Heading: Identifier_List LPAREN Function_Parameters_List RPAREN */
3754 #line 802 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3755 {
3756 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
3757 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3758 func->identifier = iden;
3759 func->location = (*yylocp);
3760 func->doc_comment = std::move(iden->doc_comment);
3761 (*yyvalp) = func;}
3762 #line 3763 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3763 break;
3764
3765 case 93: /* Function_Heading: Identifier_List LT FunctionTemplateList GT LPAREN Function_Parameters_List RPAREN */
3766 #line 810 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3767 {
3768 ASTExprIdentifier* iden = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
3769 ASTStringList* template_list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3770 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3771 func->identifier = iden;
3772 func->templates.swap(template_list->strings);
3773 delete template_list;
3774 func->location = (*yylocp);
3775 func->doc_comment = std::move(iden->doc_comment);
3776 (*yyvalp) = func;}
3777 #line 3778 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3778 break;
3779
3780 case 94: /* FunctionTemplateList: Identifier */
3781 #line 823 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3782 {
3783 ASTStringList* list = new ASTStringList((*yylocp));
3784 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3785 list->strings.push_back(templ);
3786 (*yyvalp) = list;}
3787 #line 3788 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3788 break;
3789
3790 case 95: /* FunctionTemplateList: FunctionTemplateList COMMA Identifier */
3791 #line 828 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3792 {
3793 ASTStringList* list = (ASTStringList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3794 ASTString* templ = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3795 list->location = (*yylocp);
3796 list->strings.push_back(templ);
3797 (*yyvalp) = list;}
3798 #line 3799 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3799 break;
3800
3801 case 96: /* Function_Parameters_List: Function_Parameters_Element COMMA Function_Parameters_List */
3802 #line 836 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3803 {
3804 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3805 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3806 push_front(func->parameters, param);
3807 func->location = (*yylocp);
3808 (*yyvalp) = func;}
3809 #line 3810 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3810 break;
3811
3812 case 97: /* Function_Parameters_List: Function_Parameters_Element */
3813 #line 842 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3814 {
3815 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3816 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3817 push_front(func->parameters, param);
3818 (*yyvalp) = func;}
3819 #line 3820 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3820 break;
3821
3822 case 98: /* Function_Parameters_List: Function_OptParams_List */
3823 #line 847 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3824 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3825 #line 3826 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3826 break;
3827
3828 case 99: /* Function_Parameters_List: Function_VarArg_Element */
3829 #line 848 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3830 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3831 #line 3832 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3832 break;
3833
3834 case 100: /* Function_Parameters_List: %empty */
3835 #line 849 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3836 {(*yyvalp) = new ASTFuncDecl((*yylocp));}
3837 #line 3838 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3838 break;
3839
3840 case 101: /* Function_Parameters_Element: DataType Identifier */
3841 #line 853 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3842 {
3843 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3844 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3845 ASTDataDecl* element = new ASTDataDecl((*yylocp));
3846 element->identifier = name;
3847 element->baseType = type;
3848 (*yyvalp) = element;}
3849 #line 3850 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3850 break;
3851
3852 case 102: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant COMMA Function_OptParams_List */
3853 #line 863 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3854 {
3855 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3856 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
3857 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3858 push_front(func->parameters, param);
3859 push_front(func->optparams, cval);
3860 func->location = (*yylocp);
3861 (*yyvalp) = func;}
3862 #line 3863 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3863 break;
3864
3865 case 103: /* Function_OptParams_List: Function_Parameters_Element ASSIGN Expression_Constant */
3866 #line 871 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3867 {
3868 ASTDataDecl* param = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
3869 ASTExprConst* cval = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3870 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3871 push_front(func->parameters, param);
3872 push_front(func->optparams, cval);
3873 (*yyvalp) = func;}
3874 #line 3875 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3875 break;
3876
3877 case 104: /* Function_VarArg_Element: RANGE Function_Parameters_Element */
3878 #line 881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3879 {
3880 ASTFuncDecl* func = new ASTFuncDecl((*yylocp));
3881 push_front(func->parameters, (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
3882 func->setFlag(FUNCFLAG_VARARGS);
3883 (*yyvalp) = func;}
3884 #line 3885 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3885 break;
3886
3887 case 105: /* Class_Ident: IDENTIFIER */
3888 #line 890 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3889 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
3890 #line 3891 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3891 break;
3892
3893 case 106: /* Class: ZCLASS Class_Ident Class_Block */
3894 #line 893 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3895 {
3896 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3897 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3898 user_class->location = name->location;
3899 user_class->identifier = name;
3900 user_class->doc_comment = std::move(name->doc_comment);
3901 if (!first_identifier_for_line) first_identifier_for_line = user_class;
3902 (*yyvalp) = user_class;}
3903 #line 3904 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3904 break;
3905
3906 case 107: /* Class_Block: LBRACE Class_Block_List RBRACE */
3907 #line 904 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3908 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
3909 #line 3910 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3910 break;
3911
3912 case 108: /* Class_Block: LBRACE RBRACE */
3913 #line 905 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3914 {(*yyvalp) = new ASTClass((*yylocp));}
3915 #line 3916 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3916 break;
3917
3918 case 109: /* Class_Block_List: Class_Block_List Class_Block_Element */
3919 #line 909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3920 {
3921 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3922 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3923 user_class->addDeclaration(*declaration);
3924 user_class->location = (*yylocp);
3925 (*yyvalp) = user_class;}
3926 #line 3927 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3927 break;
3928
3929 case 110: /* Class_Block_List: Class_Block_List Option */
3930 #line 915 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3931 {
3932 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3933 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3934 user_class->options.push_back(option);
3935 user_class->location = (*yylocp);
3936 (*yyvalp) = user_class;
3937 if (!user_class->variables.empty()
3938 || !user_class->functions.empty()
3939 || !user_class->types.empty()) {
3940 yywarn("WARNING: Options should come before everything else.");}}
3941 #line 3942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3942 break;
3943
3944 case 111: /* Class_Block_List: Class_Block_List Class_Constructor */
3945 #line 925 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3946 {
3947 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3948 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3949 user_class->constructors.push_back(func);
3950 (*yyvalp) = user_class;}
3951 #line 3952 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3952 break;
3953
3954 case 112: /* Class_Block_List: Class_Block_List Class_Destructor */
3955 #line 930 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3956 {
3957 ASTClass* user_class = (ASTClass*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
3958 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3959 if(user_class->destructor)
3960 {
3961 auto const& loc = func->location;
3962 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
3963 delete func;
3964 }
3965 else user_class->destructor = func;
3966 (*yyvalp) = user_class;}
3967 #line 3968 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3968 break;
3969
3970 case 113: /* Class_Block_List: Class_Block_Element */
3971 #line 941 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3972 {
3973 ASTClass* user_class = new ASTClass((*yylocp));
3974 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3975 user_class->addDeclaration(*declaration);
3976 (*yyvalp) = user_class;}
3977 #line 3978 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3978 break;
3979
3980 case 114: /* Class_Block_List: Option */
3981 #line 946 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3982 {
3983 ASTClass* user_class = new ASTClass((*yylocp));
3984 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3985 user_class->options.push_back(option);
3986 (*yyvalp) = user_class;}
3987 #line 3988 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3988 break;
3989
3990 case 115: /* Class_Block_List: Class_Constructor */
3991 #line 951 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
3992 {
3993 ASTClass* user_class = new ASTClass((*yylocp));
3994 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
3995 user_class->constructors.push_back(func);
3996 (*yyvalp) = user_class;}
3997 #line 3998 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
3998 break;
3999
4000 case 116: /* Class_Block_List: Class_Destructor */
4001 #line 956 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4002 {
4003 ASTClass* user_class = new ASTClass((*yylocp));
4004 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4005 if(user_class->destructor)
4006 {
4007 auto const& loc = func->location;
4008 yyerrmsg("ERROR: Class can only have one destructor!",loc.first_line,loc.first_column,func->getName().c_str());
4009 delete func;
4010 }
4011 else user_class->destructor = func;
4012 (*yyvalp) = user_class;}
4013 #line 4014 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4014 break;
4015
4016 case 117: /* Class_Constructor: INTERNAL Class_Constructor */
4017 #line 970 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4018 {
4019 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4020 if(func->getFlag(FUNCFLAG_INTERNAL))
4021 {
4022 func->setFlag(FUNCFLAG_INVALID);
4023 func->invalidMsg += " Duplicate `internal`.";
4024 }
4025 else func->setFlag(FUNCFLAG_INTERNAL);
4026 func->prototype = false;
4027 (*yyvalp) = func;}
4028 #line 4029 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4029 break;
4030
4031 case 118: /* Class_Constructor: Function_Typeless */
4032 #line 980 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4033 {
4034 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4035 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4036 func->returnType = returnType;
4037 func->setFlag(FUNCFLAG_CONSTRUCTOR|FUNCFLAG_CLASSFUNC);
4038 if(func->getFlag(FUNCFLAG_STATIC))
4039 {
4040 func->setFlag(FUNCFLAG_INVALID);
4041 func->invalidMsg += " Constructors and destructors cannot be static.";
4042 }
4043 (*yyvalp) = func;}
4044 #line 4045 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4045 break;
4046
4047 case 119: /* Class_Destructor: BITNOT Function_Typeless */
4048 #line 993 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4049 {
4050 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4051 ASTDataType* returnType = new ASTDataType(DataType::ZVOID, (*yylocp));
4052 func->returnType = returnType;
4053 func->setFlag(FUNCFLAG_DESTRUCTOR|FUNCFLAG_CLASSFUNC);
4054 if(func->getFlag(FUNCFLAG_STATIC))
4055 {
4056 func->setFlag(FUNCFLAG_INVALID);
4057 func->invalidMsg += " Constructors and destructors cannot be static.";
4058 }
4059 (*yyvalp) = func;}
4060 #line 4061 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4061 break;
4062
4063 case 120: /* Class_Data: Data */
4064 #line 1007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4065 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4066 #line 4067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4067 break;
4068
4069 case 121: /* Class_Block_Element: Class_Data SEMICOLON */
4070 #line 1011 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4071 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4072 #line 4073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4073 break;
4074
4075 case 122: /* Class_Block_Element: Function */
4076 #line 1012 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4077 {
4078 ASTFuncDecl* func = (ASTFuncDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4079 func->setFlag(FUNCFLAG_CLASSFUNC);
4080 (*yyvalp) = func;}
4081 #line 4082 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4082 break;
4083
4084 case 123: /* Class_Block_Element: DataTypeDef SEMICOLON */
4085 #line 1016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4086 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4087 #line 4088 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4088 break;
4089
4090 case 124: /* Class_Block_Element: Annotated_Enum SEMICOLON */
4091 #line 1017 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4092 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4093 #line 4094 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4094 break;
4095
4096 case 125: /* Class_Block_Element: Using SEMICOLON */
4097 #line 1018 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4098 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4099 #line 4100 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4100 break;
4101
4102 case 126: /* Class_Block_Element: Statement_Assert SEMICOLON */
4103 #line 1019 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4104 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4105 #line 4106 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4106 break;
4107
4108 case 127: /* Class_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Class_Block_Element */
4109 #line 1020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4110 {
4111 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4112 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4113 declaration->compileErrorCatches.push_back(errorId);
4114 (*yyvalp) = declaration;}
4115 #line 4116 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4116 break;
4117
4118 case 128: /* Annotated_Script: Annotation_List Script */
4119 #line 1031 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4120 {
4121 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4122 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4123 handle_annotations(list, [&](AnnotData& data)
4124 {
4125 auto& key = data.key;
4126 if(key == "Author")
4127 {
4128 if(annot_type_check(ANNTY_STR, data))
4129 {
4130 annot_trunc_str(data.unescaped_val, 255);
4131 script->metadata.author = data.unescaped_val;
4132 }
4133 return true;
4134 }
4135 else if(key == "InitScript")
4136 {
4137 if(annot_type_check(ANNTY_INT, data))
4138 script->init_weight = data.intval.getZLong();
4139 return true;
4140 }
4141 else if((key.size() == 5 || key.size() == 6) && !key.compare(0,4,"Flag"))
4142 {
4143 byte c = key[4]-'0';
4144 if(key.size() == 6)
4145 c = (c*10)+key[5]-'0';
4146 if(c < 16)
4147 {
4148 if(annot_type_check(ANNTY_STR, data))
4149 {
4150 annot_trunc_str(data.unescaped_val, 255);
4151 script->metadata.usrflags[c] = data.unescaped_val;
4152 }
4153 return true;
4154 }
4155 }
4156 else if((key.size() == 9 || key.size() == 10) && !key.compare(0,8,"FlagHelp"))
4157 {
4158 byte c = key[8]-'0';
4159 if(key.size() == 10)
4160 c = (c*10)+key[9]-'0';
4161 if(c < 16)
4162 {
4163 if(annot_type_check(ANNTY_STR, data))
4164 {
4165 annot_trunc_str(data.val, 65535);
4166 script->metadata.usrflags_help[c] = data.val;
4167 }
4168 return true;
4169 }
4170 }
4171 else if(key.size() == 6 && !key.compare(0,5,"InitD"))
4172 {
4173 byte c = key[5]-'0';
4174 if(c < 8)
4175 {
4176 if(annot_type_check(ANNTY_STR, data))
4177 {
4178 annot_trunc_str(data.unescaped_val, 255);
4179 script->metadata.initd[c] = data.unescaped_val;
4180 }
4181 return true;
4182 }
4183 }
4184 else if(key.size() == 10)
4185 {
4186 byte c = key[9]-'0';
4187 if(!key.compare(0,9,"InitDType"))
4188 {
4189 if(c < 8)
4190 {
4191 if(annot_type_check(ANNTY_STR, data))
4192 {
4193 int8_t v = -1;
4194 upperstr(data.val);
4195 if(data.val.size() == 2 && data.val[0] == 'L')
4196 {
4197 switch(data.val[1])
4198 {
4199 case 'D': v = nswapLDEC; break;
4200 case 'H': v = nswapLHEX; break;
4201 }
4202 }
4203 else if(data.val.size() == 1)
4204 {
4205 switch(data.val[0])
4206 {
4207 case 'D': v = nswapDEC; break;
4208 case 'H': v = nswapHEX; break;
4209 case 'B': v = nswapBOOL; break;
4210 }
4211 }
4212 if(unsigned(v) < nswapMAX)
4213 script->metadata.initd_type[c] = v;
4214 else if(data.val == "-1")
4215 script->metadata.initd_type[c] = -1;
4216 else annot_errstr("ERROR: Bad Annotation Value: '@" + key + "' must be"
4217 " exactly 'D','H','LD','LH','B', or '-1' NOT '" + data.strval + "'.");
4218 }
4219 return true;
4220 }
4221 }
4222 else if(!key.compare(0,9,"InitDHelp"))
4223 {
4224 if(c < 8)
4225 {
4226 if(annot_type_check(ANNTY_STR, data))
4227 {
4228 annot_trunc_str(data.val, 65535);
4229 script->metadata.initd_help[c] = data.val;
4230 }
4231 return true;
4232 }
4233 }
4234 else if(!key.compare(0,9,"Attribute"))
4235 {
4236 if(c < 10)
4237 {
4238 if(annot_type_check(ANNTY_STR, data))
4239 {
4240 annot_trunc_str(data.unescaped_val, 255);
4241 script->metadata.attributes[c] = data.unescaped_val;
4242 }
4243 return true;
4244 }
4245 }
4246 else if(!key.compare(0,9,"Attribyte"))
4247 {
4248 if(c < 8)
4249 {
4250 if(annot_type_check(ANNTY_STR, data))
4251 {
4252 annot_trunc_str(data.unescaped_val, 255);
4253 script->metadata.attribytes[c] = data.unescaped_val;
4254 }
4255 return true;
4256 }
4257 }
4258 }
4259 else if(key.size() == 11 && !key.compare(0,10,"Attrishort"))
4260 {
4261 byte c = key[10]-'0';
4262 if(c < 8)
4263 {
4264 if(annot_type_check(ANNTY_STR, data))
4265 {
4266 annot_trunc_str(data.unescaped_val, 255);
4267 script->metadata.attrishorts[c] = data.unescaped_val;
4268 }
4269 return true;
4270 }
4271 }
4272 else if(key.size() == 14)
4273 {
4274 if(!key.compare(0,13,"AttributeHelp"))
4275 {
4276 byte c = key[13]-'0';
4277 if(c < 10)
4278 {
4279 if(annot_type_check(ANNTY_STR, data))
4280 {
4281 annot_trunc_str(data.val, 65535);
4282 script->metadata.attributes_help[c] = data.val;
4283 }
4284 return true;
4285 }
4286 }
4287 else if(!key.compare(0,13,"AttribyteHelp"))
4288 {
4289 byte c = key[13]-'0';
4290 if(c < 8)
4291 {
4292 if(annot_type_check(ANNTY_STR, data))
4293 {
4294 annot_trunc_str(data.val, 65535);
4295 script->metadata.attribytes_help[c] = data.val;
4296 }
4297 return true;
4298 }
4299 }
4300 }
4301 else if(key.size() == 15 && !key.compare(0,14,"AttrishortHelp"))
4302 {
4303 byte c = key[14]-'0';
4304 if(c < 8)
4305 {
4306 if(annot_type_check(ANNTY_STR, data))
4307 {
4308 annot_trunc_str(data.val, 65535);
4309 script->metadata.attrishorts_help[c] = data.val;
4310 }
4311 return true;
4312 }
4313 }
4314 return false;
4315 });
4316 (*yyvalp) = script;}
4317 #line 4318 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4318 break;
4319
4320 case 129: /* Script: Script_Type SCRIPT IDENTIFIER Script_Block */
4321 #line 1231 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4322 {
4323 ASTScriptType* type = (ASTScriptType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4324 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4325 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4326 script->identifier = name;
4327 script->type = type;
4328 script->metadata.script_name = name->getValue();
4329 script->location = (*yylocp);
4330 (*yyvalp) = script;}
4331 #line 4332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4332 break;
4333
4334 case 130: /* Script_Type: IDENTIFIER */
4335 #line 1244 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4336 {
4337 ASTString* name = static_cast<ASTString*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4338 (*yyvalp) = new ASTScriptType(name->getValue(), (*yylocp));
4339 delete name;}
4340 #line 4341 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4341 break;
4342
4343 case 131: /* Script_Block: LBRACE Script_Block_List RBRACE */
4344 #line 1251 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4345 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4346 #line 4347 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4347 break;
4348
4349 case 132: /* Script_Block: LBRACE RBRACE */
4350 #line 1252 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4351 {(*yyvalp) = new ASTScript((*yylocp));}
4352 #line 4353 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4353 break;
4354
4355 case 133: /* Script_Block_List: Script_Block_List Script_Block_Element */
4356 #line 1256 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4357 {
4358 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4359 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4360 script->addDeclaration(*declaration);
4361 script->location = (*yylocp);
4362 (*yyvalp) = script;}
4363 #line 4364 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4364 break;
4365
4366 case 134: /* Script_Block_List: Script_Block_List Option */
4367 #line 1262 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4368 {
4369 ASTScript* script = (ASTScript*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4370 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4371 script->options.push_back(option);
4372 script->location = (*yylocp);
4373 (*yyvalp) = script;
4374 if (!script->variables.empty()
4375 || !script->functions.empty()
4376 || !script->types.empty()) {
4377 yywarn("WARNING: Options should come before everything else.");}}
4378 #line 4379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4379 break;
4380
4381 case 135: /* Script_Block_List: Script_Block_Element */
4382 #line 1272 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4383 {
4384 ASTScript* script = new ASTScript((*yylocp));
4385 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4386 script->addDeclaration(*declaration);
4387 (*yyvalp) = script;}
4388 #line 4389 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4389 break;
4390
4391 case 136: /* Script_Block_List: Option */
4392 #line 1277 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4393 {
4394 ASTScript* script = new ASTScript((*yylocp));
4395 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4396 script->options.push_back(option);
4397 (*yyvalp) = script;}
4398 #line 4399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4399 break;
4400
4401 case 137: /* Script_Block_Element: Data SEMICOLON */
4402 #line 1285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4403 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4404 #line 4405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4405 break;
4406
4407 case 138: /* Script_Block_Element: Function */
4408 #line 1286 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4409 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4410 #line 4411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4411 break;
4412
4413 case 139: /* Script_Block_Element: DataTypeDef SEMICOLON */
4414 #line 1287 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4415 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4416 #line 4417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4417 break;
4418
4419 case 140: /* Script_Block_Element: Annotated_Enum SEMICOLON */
4420 #line 1288 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4421 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4422 #line 4423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4423 break;
4424
4425 case 141: /* Script_Block_Element: Using SEMICOLON */
4426 #line 1289 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4427 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4428 #line 4429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4429 break;
4430
4431 case 142: /* Script_Block_Element: Statement_Assert SEMICOLON */
4432 #line 1290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4433 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4434 #line 4435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4435 break;
4436
4437 case 143: /* Script_Block_Element: EXPECTERROR LPAREN Expression_Constant RPAREN Script_Block_Element */
4438 #line 1291 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4439 {
4440 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4441 ASTDecl* declaration = (ASTDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4442 declaration->compileErrorCatches.push_back(errorId);
4443 (*yyvalp) = declaration;}
4444 #line 4445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4445 break;
4446
4447 case 144: /* Annotation_List: Annotation_List COMMA Annotation */
4448 #line 1299 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4449 {
4450 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4451 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4452 (*yyvalp) = list;}
4453 #line 4454 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4454 break;
4455
4456 case 145: /* Annotation_List: Annotation */
4457 #line 1303 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4458 {
4459 ASTAnnotationList* list = new ASTAnnotationList((*yylocp));
4460 list->set.push_back((ASTAnnotation*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
4461 (*yyvalp) = list;}
4462 #line 4463 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4463 break;
4464
4465 case 146: /* Annotation: HANDLE IDENTIFIER LPAREN QuotedString RPAREN */
4466 #line 1310 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4467 {
4468 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4469 ASTString* val = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4470 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4471 (*yyvalp) = a;}
4472 #line 4473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4473 break;
4474
4475 case 147: /* Annotation: HANDLE IDENTIFIER LPAREN NUMBER RPAREN */
4476 #line 1315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4477 {
4478 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4479 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4480 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4481 (*yyvalp) = a;}
4482 #line 4483 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4483 break;
4484
4485 case 148: /* Annotation: HANDLE IDENTIFIER LPAREN LONGNUMBER RPAREN */
4486 #line 1320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4487 {
4488 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4489 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4490 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4491 (*yyvalp) = a;}
4492 #line 4493 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4493 break;
4494
4495 case 149: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS NUMBER RPAREN */
4496 #line 1325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4497 {
4498 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4499 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4500 val->negative = !val->negative;
4501 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4502 (*yyvalp) = a;}
4503 #line 4504 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4504 break;
4505
4506 case 150: /* Annotation: HANDLE IDENTIFIER LPAREN MINUS LONGNUMBER RPAREN */
4507 #line 1331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4508 {
4509 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4510 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4511 val->negative = !val->negative;
4512 ASTAnnotation* a = new ASTAnnotation(key, val, (*yylocp));
4513 (*yyvalp) = a;}
4514 #line 4515 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4515 break;
4516
4517 case 151: /* Annotation: HANDLE IDENTIFIER LPAREN RPAREN */
4518 #line 1337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4519 {
4520 ASTString* key = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4521 ASTAnnotation* a = new ASTAnnotation(key, (*yylocp));
4522 (*yyvalp) = a;}
4523 #line 4524 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4524 break;
4525
4526 case 152: /* Block_Statement: Statement */
4527 #line 1347 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4528 {
4529 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4530 if(ASTBlock* existing_block = dynamic_cast<ASTBlock*>(stmt))
4531 {
4532 (*yyvalp) = existing_block;
4533 }
4534 else
4535 {
4536 ASTBlock* block = new ASTBlock((*yylocp));
4537 block->statements.push_back(stmt);
4538 (*yyvalp) = block;
4539 }
4540 }
4541 #line 4542 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4542 break;
4543
4544 case 153: /* Statement: Data SEMICOLON */
4545 #line 1364 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4546 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4547 #line 4548 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4548 break;
4549
4550 case 154: /* Statement: DataTypeDef SEMICOLON */
4551 #line 1365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4552 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4553 #line 4554 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4554 break;
4555
4556 case 155: /* Statement: Annotated_Enum SEMICOLON */
4557 #line 1366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4558 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4559 #line 4560 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4560 break;
4561
4562 case 156: /* Statement: Using SEMICOLON */
4563 #line 1367 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4564 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4565 #line 4566 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4566 break;
4567
4568 case 157: /* Statement: Statement_Expression SEMICOLON */
4569 #line 1369 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4570 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4571 #line 4572 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4572 break;
4573
4574 case 158: /* Statement: Statement_Block */
4575 #line 1370 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4576 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4577 #line 4578 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4578 break;
4579
4580 case 159: /* Statement: Statement_If */
4581 #line 1371 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4582 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4583 #line 4584 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4584 break;
4585
4586 case 160: /* Statement: Statement_Switch */
4587 #line 1372 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4588 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4589 #line 4590 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4590 break;
4591
4592 case 161: /* Statement: Statement_For */
4593 #line 1373 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4594 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4595 #line 4596 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4596 break;
4597
4598 case 162: /* Statement: Annotated_Loop */
4599 #line 1374 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4600 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4601 #line 4602 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4602 break;
4603
4604 case 163: /* Statement: Statement_While */
4605 #line 1375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4606 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4607 #line 4608 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4608 break;
4609
4610 case 164: /* Statement: Statement_Do */
4611 #line 1376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4612 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4613 #line 4614 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4614 break;
4615
4616 case 165: /* Statement: Statement_Repeat */
4617 #line 1377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4618 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4619 #line 4620 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4620 break;
4621
4622 case 166: /* Statement: Statement_Return SEMICOLON */
4623 #line 1378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4624 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4625 #line 4626 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4626 break;
4627
4628 case 167: /* Statement: BREAK SEMICOLON */
4629 #line 1379 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4630 {(*yyvalp) = new ASTStmtBreak(NULL, (*yylocp));}
4631 #line 4632 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4632 break;
4633
4634 case 168: /* Statement: BREAK NUMBER SEMICOLON */
4635 #line 1380 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4636 {
4637 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4638 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4639 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4640 }
4641 #line 4642 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4642 break;
4643
4644 case 169: /* Statement: CONTINUE SEMICOLON */
4645 #line 1385 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4646 {(*yyvalp) = new ASTStmtContinue(NULL, (*yylocp));}
4647 #line 4648 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4648 break;
4649
4650 case 170: /* Statement: CONTINUE NUMBER SEMICOLON */
4651 #line 1386 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4652 {
4653 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4654 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4655 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4656 }
4657 #line 4658 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4658 break;
4659
4660 case 171: /* Statement: SEMICOLON */
4661 #line 1391 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4662 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4663 #line 4664 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4664 break;
4665
4666 case 172: /* Statement: Statement_CompileError SEMICOLON */
4667 #line 1392 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4668 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4669 #line 4670 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4670 break;
4671
4672 case 173: /* Statement: Statement_Assert SEMICOLON */
4673 #line 1393 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4674 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4675 #line 4676 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4676 break;
4677
4678 case 174: /* Statement_NoSemicolon: Data */
4679 #line 1398 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4680 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4681 #line 4682 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4682 break;
4683
4684 case 175: /* Statement_NoSemicolon: DataTypeDef */
4685 #line 1399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4686 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4687 #line 4688 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4688 break;
4689
4690 case 176: /* Statement_NoSemicolon: Annotated_Enum */
4691 #line 1400 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4692 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4693 #line 4694 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4694 break;
4695
4696 case 177: /* Statement_NoSemicolon: Statement_Expression */
4697 #line 1402 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4698 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4699 #line 4700 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4700 break;
4701
4702 case 178: /* Statement_NoSemicolon: Statement_Block */
4703 #line 1403 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4704 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4705 #line 4706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4706 break;
4707
4708 case 179: /* Statement_NoSemicolon: Statement_If */
4709 #line 1404 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4710 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4711 #line 4712 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4712 break;
4713
4714 case 180: /* Statement_NoSemicolon: Statement_Switch */
4715 #line 1405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4716 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4717 #line 4718 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4718 break;
4719
4720 case 181: /* Statement_NoSemicolon: Statement_For */
4721 #line 1406 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4722 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4723 #line 4724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4724 break;
4725
4726 case 182: /* Statement_NoSemicolon: Annotated_Loop */
4727 #line 1407 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4728 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4729 #line 4730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4730 break;
4731
4732 case 183: /* Statement_NoSemicolon: Statement_While */
4733 #line 1408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4734 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4735 #line 4736 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4736 break;
4737
4738 case 184: /* Statement_NoSemicolon: Statement_Do */
4739 #line 1409 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4740 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4741 #line 4742 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4742 break;
4743
4744 case 185: /* Statement_NoSemicolon: Statement_Return */
4745 #line 1410 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4746 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4747 #line 4748 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4748 break;
4749
4750 case 186: /* Statement_NoSemicolon: BREAK */
4751 #line 1411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4752 {(*yyvalp) = new ASTStmtBreak(NULL,(*yylocp));}
4753 #line 4754 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4754 break;
4755
4756 case 187: /* Statement_NoSemicolon: BREAK NUMBER */
4757 #line 1412 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4758 {
4759 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4760 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4761 (*yyvalp) = new ASTStmtBreak(lit, (*yylocp));
4762 }
4763 #line 4764 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4764 break;
4765
4766 case 188: /* Statement_NoSemicolon: CONTINUE */
4767 #line 1417 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4768 {(*yyvalp) = new ASTStmtContinue(NULL,(*yylocp));}
4769 #line 4770 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4770 break;
4771
4772 case 189: /* Statement_NoSemicolon: CONTINUE NUMBER */
4773 #line 1418 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4774 {
4775 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4776 ASTNumberLiteral* lit = new ASTNumberLiteral(val, (*yylocp));
4777 (*yyvalp) = new ASTStmtContinue(lit, (*yylocp));
4778 }
4779 #line 4780 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4780 break;
4781
4782 case 190: /* Statement_NoSemicolon: %empty */
4783 #line 1423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4784 {(*yyvalp) = new ASTStmtEmpty((*yylocp));}
4785 #line 4786 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4786 break;
4787
4788 case 191: /* Statement_NoSemicolon: Statement_CompileError */
4789 #line 1424 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4790 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4791 #line 4792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4792 break;
4793
4794 case 192: /* Statement_Block: LBRACE Statement_Block_List RBRACE */
4795 #line 1428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4796 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
4797 #line 4798 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4798 break;
4799
4800 case 193: /* Statement_Block: LBRACE RBRACE */
4801 #line 1429 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4802 {(*yyvalp) = new ASTBlock((*yylocp));}
4803 #line 4804 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4804 break;
4805
4806 case 194: /* Statement_Block_List: Statement_Block_List Statement */
4807 #line 1433 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4808 {
4809 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4810 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4811 block->statements.push_back(stmt);
4812 (*yyvalp) = block;}
4813 #line 4814 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4814 break;
4815
4816 case 195: /* Statement_Block_List: Statement_Block_List Option */
4817 #line 1438 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4818 {
4819 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4820 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4821 block->options.push_back(option);
4822 (*yyvalp) = block;
4823 if (!block->statements.empty()) {
4824 yywarn("WARNING: Options should come before everything else.");}}
4825 #line 4826 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4826 break;
4827
4828 case 196: /* Statement_Block_List: Statement */
4829 #line 1445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4830 {
4831 ASTStmt* stmt = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4832 ASTBlock* block = new ASTBlock((*yylocp));
4833 block->statements.push_back(stmt);
4834 (*yyvalp) = block;}
4835 #line 4836 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4836 break;
4837
4838 case 197: /* Statement_Block_List: Option */
4839 #line 1450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4840 {
4841 ASTSetOption* option = (ASTSetOption*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4842 ASTBlock* block = new ASTBlock((*yylocp));
4843 block->options.push_back(option);
4844 (*yyvalp) = block;}
4845 #line 4846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4846 break;
4847
4848 case 198: /* Statement_If: IF If_Body */
4849 #line 1458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4850 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
4851 #line 4852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4852 break;
4853
4854 case 199: /* Statement_If: UNLESS If_Body */
4855 #line 1459 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4856 {
4857 ASTStmtIf* stmt = (ASTStmtIf*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4858 stmt->invert();
4859 (*yyvalp) = stmt;
4860 }
4861 #line 4862 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4862 break;
4863
4864 case 200: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement */
4865 #line 1467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4866 {
4867 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4868 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4869 (*yyvalp) = new ASTStmtIf(decl, stmt, (*yylocp));}
4870 #line 4871 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4871 break;
4872
4873 case 201: /* If_Body: LPAREN Single_Data_req_assign RPAREN Block_Statement ELSE Block_Statement */
4874 #line 1471 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4875 {
4876 ASTDataDecl* decl = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4877 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4878 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4879 (*yyvalp) = new ASTStmtIfElse(decl, thenStatement, elseStatement, (*yylocp));}
4880 #line 4881 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4881 break;
4882
4883 case 202: /* If_Body: LPAREN Expression RPAREN Block_Statement */
4884 #line 1476 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4885 {
4886 ASTExpr* cond = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4887 ASTBlock* stmt = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4888 (*yyvalp) = new ASTStmtIf(cond, stmt, (*yylocp));}
4889 #line 4890 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4890 break;
4891
4892 case 203: /* If_Body: LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
4893 #line 1480 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4894 {
4895 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4896 ASTBlock* thenStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4897 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4898 (*yyvalp) = new ASTStmtIfElse(test, thenStatement, elseStatement, (*yylocp));}
4899 #line 4900 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4900 break;
4901
4902 case 204: /* Statement_Switch: SWITCH LPAREN Expression RPAREN LBRACE Statement_Switch_Body RBRACE */
4903 #line 1488 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4904 {
4905 ASTExpr* key = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
4906 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4907 sw->key = key;
4908 (*yyvalp) = sw;}
4909 #line 4910 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4910 break;
4911
4912 case 205: /* Statement_Switch_Body: Statement_Switch_Body Statement_Switch_Cases Statement_Block_List */
4913 #line 1495 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4914 {
4915 ASTStmtSwitch* sw = (ASTStmtSwitch*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4916 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4917 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4918 cases->block = block;
4919 sw->cases.push_back(cases);
4920 (*yyvalp) = sw;}
4921 #line 4922 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4922 break;
4923
4924 case 206: /* Statement_Switch_Body: Statement_Switch_Cases Statement_Block_List */
4925 #line 1502 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4926 {
4927 ASTStmtSwitch* sw = new ASTStmtSwitch((*yylocp));
4928 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4929 ASTBlock* block = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
4930 cases->block = block;
4931 sw->cases.push_back(cases);
4932 (*yyvalp) = sw;}
4933 #line 4934 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4934 break;
4935
4936 case 207: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Constant COLON */
4937 #line 1512 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4938 {
4939 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4940 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4941 cases->cases.push_back(key);
4942 (*yyvalp) = cases;}
4943 #line 4944 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4944 break;
4945
4946 case 208: /* Statement_Switch_Cases: Statement_Switch_Cases DEFAULT COLON */
4947 #line 1517 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4948 {
4949 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
4950 cases->isDefault = true;
4951 (*yyvalp) = cases;}
4952 #line 4953 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4953 break;
4954
4955 case 209: /* Statement_Switch_Cases: Statement_Switch_Cases CASE Expression_Const_Range COLON */
4956 #line 1521 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4957 {
4958 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4959 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4960 cases->ranges.push_back(range);
4961 (*yyvalp) = cases;}
4962 #line 4963 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4963 break;
4964
4965 case 210: /* Statement_Switch_Cases: Statement_Switch_Cases CASE CASESTRING COLON */
4966 #line 1526 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4967 {
4968 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4969 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
4970 delete rawstring;
4971 ASTSwitchCases* cases = (ASTSwitchCases*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
4972 cases->str_cases.push_back(key);
4973 (*yyvalp) = cases;}
4974 #line 4975 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4975 break;
4976
4977 case 211: /* Statement_Switch_Cases: CASE Expression_Constant COLON */
4978 #line 1533 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4979 {
4980 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4981 ASTExprConst* key = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4982 cases->cases.push_back(key);
4983 (*yyvalp) = cases;}
4984 #line 4985 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4985 break;
4986
4987 case 212: /* Statement_Switch_Cases: CASE Expression_Const_Range COLON */
4988 #line 1538 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4989 {
4990 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
4991 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
4992 cases->ranges.push_back(range);
4993 (*yyvalp) = cases;}
4994 #line 4995 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
4995 break;
4996
4997 case 213: /* Statement_Switch_Cases: CASE CASESTRING COLON */
4998 #line 1543 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
4999 {
5000 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5001 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5002 ASTStringLiteral* key = new ASTStringLiteral(*rawstring);
5003 delete rawstring;
5004 cases->str_cases.push_back(key);
5005 (*yyvalp) = cases;}
5006 #line 5007 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5007 break;
5008
5009 case 214: /* Statement_Switch_Cases: DEFAULT COLON */
5010 #line 1550 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5011 {
5012 ASTSwitchCases* cases = new ASTSwitchCases((*yylocp));
5013 cases->isDefault = true;
5014 (*yyvalp) = cases;}
5015 #line 5016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5016 break;
5017
5018 case 215: /* Statement_For: Statement_For_Standard */
5019 #line 1557 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5020 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5021 #line 5022 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5022 break;
5023
5024 case 216: /* Statement_For: Statement_For_Each */
5025 #line 1558 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5026 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5027 #line 5028 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5028 break;
5029
5030 case 217: /* Statement_CommaList: Statement_CommaList COMMA Statement_NoSemicolon */
5031 #line 1562 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5032 {
5033 ASTNodeList<ASTStmt>* list = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5034 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5035 (*yyvalp) = list;
5036 }
5037 #line 5038 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5038 break;
5039
5040 case 218: /* Statement_CommaList: Statement_NoSemicolon */
5041 #line 1567 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5042 {
5043 ASTNodeList<ASTStmt>* list = new ASTNodeList<ASTStmt>();
5044 list->push((ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5045 (*yyvalp) = list;
5046 }
5047 #line 5048 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5048 break;
5049
5050 case 219: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement */
5051 #line 1580 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5052 {
5053 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5054 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5055 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5056 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5057 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, nullptr, (*yylocp));
5058 }
5059 #line 5060 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5060 break;
5061
5062 case 220: /* Statement_For_Standard: FOR LPAREN Statement_NoSemicolon SEMICOLON Expression SEMICOLON Statement_CommaList RPAREN Block_Statement ELSE Block_Statement */
5063 #line 1592 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5064 {
5065 ASTStmt* setup = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-8)].yystate.yysemantics.yyval;
5066 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5067 ASTNodeList<ASTStmt>* increments = (ASTNodeList<ASTStmt>*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5068 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5069 ASTBlock* elseStatement = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5070 (*yyvalp) = new ASTStmtFor(setup, test, increments, body, elseStatement, (*yylocp));
5071 }
5072 #line 5073 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5073 break;
5074
5075 case 221: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement */
5076 #line 1605 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5077 {
5078 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5079 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5080 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5081
5082 (*yyvalp) = new ASTStmtForEach(iden, expr, body, nullptr, (*yylocp));
5083 }
5084 #line 5085 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5085 break;
5086
5087 case 222: /* Statement_For_Each: FOR LPAREN Identifier Token_In Expression RPAREN Block_Statement ELSE Block_Statement */
5088 #line 1614 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5089 {
5090 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5091 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5092 ASTStmt* body = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5093 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5094
5095 (*yyvalp) = new ASTStmtForEach(iden, expr, body, elseblock, (*yylocp));
5096 }
5097 #line 5098 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5098 break;
5099
5100 case 223: /* Annotated_Loop: Annotation_List Statement_Loop */
5101 #line 1625 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5102 {
5103 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5104 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5105 handle_annotations(list, [&](AnnotData& data)
5106 {
5107 auto& key = data.key;
5108 if(key == "AlwaysRunEndpoint")
5109 {
5110 if(annot_type_check(ANNTY_STR, data))
5111 {
5112 if(data.strval == "off")
5113 loop->overflow = ASTStmtRangeLoop::OVERFLOW_ALLOW;
5114 else if(data.strval == "int")
5115 loop->overflow = ASTStmtRangeLoop::OVERFLOW_INT;
5116 else if(data.strval == "long" || data.strval == "float")
5117 loop->overflow = ASTStmtRangeLoop::OVERFLOW_LONG;
5118 else annot_errstr(annot_err_header+": '@"+key+"' must be"
5119 " exactly 'off','int','float', or 'long', NOT '" + data.strval + "'.");
5120 }
5121 return true;
5122 }
5123 return false;
5124 });
5125 (*yyvalp) = loop;}
5126 #line 5127 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5127 break;
5128
5129 case 224: /* Annotated_Loop: Statement_Loop */
5130 #line 1649 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5131 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5132 #line 5133 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5133 break;
5134
5135 case 225: /* Statement_Loop: Statement_Loop_Inf */
5136 #line 1653 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5137 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5138 #line 5139 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5139 break;
5140
5141 case 226: /* Statement_Loop: Statement_Loop_Range */
5142 #line 1654 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5143 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5144 #line 5145 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5145 break;
5146
5147 case 227: /* Statement_Loop_Inf: LOOP LPAREN RPAREN Block_Statement */
5148 #line 1659 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5149 {
5150 ASTExpr* test = new ASTBoolLiteral(true, (*yylocp));
5151 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5152 (*yyvalp) = new ASTStmtWhile(test,body,nullptr,(*yylocp));
5153 }
5154 #line 5155 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5155 break;
5156
5157 case 228: /* Statement_Loop_Range: Statement_Loop_Range_Base ELSE Block_Statement */
5158 #line 1667 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5159 {
5160 ASTStmtRangeLoop* loop = (ASTStmtRangeLoop*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5161 ASTStmt* elseblock = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5162 loop->elseBlock = elseblock;
5163 (*yyvalp) = loop;
5164 }
5165 #line 5166 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5166 break;
5167
5168 case 229: /* Statement_Loop_Range: Statement_Loop_Range_Base */
5169 #line 1673 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5170 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5171 #line 5172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5172 break;
5173
5174 case 230: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5175 #line 1678 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5176 {
5177 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
5178 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5179 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5180 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5181 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5182 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5183 }
5184 #line 5185 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5185 break;
5186
5187 case 231: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range COMMA Expression RPAREN Block_Statement */
5188 #line 1687 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5189 {
5190 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5191 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5192 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5193 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5194 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5195 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5196 }
5197 #line 5198 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5198 break;
5199
5200 case 232: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range COMMA Expression RPAREN Block_Statement */
5201 #line 1696 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5202 {
5203 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5204 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5205 ASTExpr* incr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5206 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5207 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5208 }
5209 #line 5210 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5210 break;
5211
5212 case 233: /* Statement_Loop_Range_Base: LOOP LPAREN DataType IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5213 #line 1704 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5214 {
5215 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
5216 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5217 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5218 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5219 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5220 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5221 }
5222 #line 5223 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5223 break;
5224
5225 case 234: /* Statement_Loop_Range_Base: LOOP LPAREN IDENTIFIER Token_In Expression_Range RPAREN Block_Statement */
5226 #line 1713 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5227 {
5228 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5229 ASTString* iden = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5230 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5231 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5232 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5233 (*yyvalp) = new ASTStmtRangeLoop(type, iden, range, incr, body, (*yylocp));
5234 }
5235 #line 5236 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5236 break;
5237
5238 case 235: /* Statement_Loop_Range_Base: LOOP LPAREN Expression_Range RPAREN Block_Statement */
5239 #line 1722 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5240 {
5241 ASTDataType* type = new ASTDataType(DataType::CFLOAT, (*yylocp));
5242 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5243 ASTExpr* incr = new ASTNumberLiteral(new ASTFloat("1", ASTFloat::TYPE_DECIMAL, (*yylocp)), (*yylocp));
5244 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5245 (*yyvalp) = new ASTStmtRangeLoop(type, new ASTString("__LOOP_ITER", (*yylocp)), range, incr, body, (*yylocp));
5246 }
5247 #line 5248 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5248 break;
5249
5250 case 236: /* Token_In: COLON */
5251 #line 1732 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5252 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5253 #line 5254 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5254 break;
5255
5256 case 237: /* Token_In: IN */
5257 #line 1733 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5258 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5259 #line 5260 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5260 break;
5261
5262 case 238: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement */
5263 #line 1737 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5264 {
5265 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5266 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5267 (*yyvalp) = new ASTStmtWhile(test, body, nullptr, (*yylocp));}
5268 #line 5269 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5269 break;
5270
5271 case 239: /* Statement_While: WHILE LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5272 #line 1741 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5273 {
5274 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5275 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5276 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5277 (*yyvalp) = new ASTStmtWhile(test, body, elseblock, (*yylocp));}
5278 #line 5279 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5279 break;
5280
5281 case 240: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement */
5282 #line 1746 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5283 {
5284 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5285 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5286 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, nullptr, (*yylocp));
5287 stmt->invert();
5288 (*yyvalp) = stmt;}
5289 #line 5290 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5290 break;
5291
5292 case 241: /* Statement_While: UNTIL LPAREN Expression RPAREN Block_Statement ELSE Block_Statement */
5293 #line 1752 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5294 {
5295 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5296 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5297 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5298 ASTStmtWhile* stmt = new ASTStmtWhile(test, body, elseblock, (*yylocp));
5299 stmt->invert();
5300 (*yyvalp) = stmt;}
5301 #line 5302 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5302 break;
5303
5304 case 242: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN */
5305 #line 1762 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5306 {
5307 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5308 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5309 (*yyvalp) = new ASTStmtDo(test, body, nullptr, (*yylocp));}
5310 #line 5311 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5311 break;
5312
5313 case 243: /* Statement_Do: DO Block_Statement WHILE LPAREN Expression RPAREN ELSE Block_Statement */
5314 #line 1766 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5315 {
5316 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5317 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5318 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5319 (*yyvalp) = new ASTStmtDo(test, body, elseblock, (*yylocp));}
5320 #line 5321 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5321 break;
5322
5323 case 244: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN */
5324 #line 1771 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5325 {
5326 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
5327 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5328 ASTStmtDo* stmt = new ASTStmtDo(test, body, nullptr, (*yylocp));
5329 stmt->invert();
5330 (*yyvalp) = stmt;}
5331 #line 5332 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5332 break;
5333
5334 case 245: /* Statement_Do: DO Block_Statement UNTIL LPAREN Expression RPAREN ELSE Block_Statement */
5335 #line 1777 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5336 {
5337 ASTStmt* body = (ASTStmt *)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
5338 ASTExpr* test = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5339 ASTBlock* elseblock = (ASTBlock*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5340 ASTStmtDo* stmt = new ASTStmtDo(test, body, elseblock, (*yylocp));
5341 stmt->invert();
5342 (*yyvalp) = stmt;}
5343 #line 5344 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5344 break;
5345
5346 case 246: /* Statement_Repeat: REPEAT LPAREN Expression_Constant RPAREN Statement */
5347 #line 1787 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5348 {
5349 ASTExprConst* expr = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5350 ASTStmt* body = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5351 (*yyvalp) = new ASTStmtRepeat(expr, body, (*yylocp));}
5352 #line 5353 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5353 break;
5354
5355 case 247: /* Statement_Return: RETURN Expression */
5356 #line 1794 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5357 {
5358 ASTExpr* value = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5359 (*yyvalp) = new ASTStmtReturnVal(value, (*yylocp));}
5360 #line 5361 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5361 break;
5362
5363 case 248: /* Statement_Return: RETURN */
5364 #line 1797 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5365 {(*yyvalp) = new ASTStmtReturn((*yylocp));}
5366 #line 5367 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5367 break;
5368
5369 case 249: /* Statement_CompileError: EXPECTERROR LPAREN Expression_Constant RPAREN Statement_NoSemicolon */
5370 #line 1801 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5371 {
5372 ASTExprConst* errorId = (ASTExprConst*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5373 ASTStmt* statement = (ASTStmt*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5374 statement->compileErrorCatches.push_back(errorId);
5375 (*yyvalp) = statement;}
5376 #line 5377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5377 break;
5378
5379 case 250: /* Annotated_Enum: Annotation_List DataEnum */
5380 #line 1809 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5381 {
5382 ASTAnnotationList* list = (ASTAnnotationList*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5383 ASTDataEnum* en = dynamic_cast<ASTDataEnum*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5384 ASTCustomDataTypeDef* tdef = dynamic_cast<ASTCustomDataTypeDef*>(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval);
5385 if(tdef) en = tdef->definition.get();
5386 handle_annotations(list, [&](AnnotData& data)
5387 {
5388 auto& key = data.key;
5389 if(key == "Increment")
5390 {
5391 if(annot_type_check(ANNTY_INT, data))
5392 en->increment_val = data.intval;
5393 return true;
5394 }
5395 return false;
5396 });
5397 (*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5398 #line 5399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5399 break;
5400
5401 case 251: /* Annotated_Enum: DataEnum */
5402 #line 1826 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5403 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5404 #line 5405 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5405 break;
5406
5407 case 252: /* DataEnum: ENUM LBRACE Enum_Block Trail_Comma_RBrace */
5408 #line 1829 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5409 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5410 #line 5411 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5411 break;
5412
5413 case 253: /* DataEnum: ENUM ASSIGN DataType LBRACE Enum_Block Trail_Comma_RBrace */
5414 #line 1830 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5415 {
5416 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5417 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5418 type->constant_ = 1; //force to be constant, skip `const const` errors
5419 list->baseType = type;
5420 list->location = (*yylocp);
5421 (*yyvalp) = list;}
5422 #line 5423 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5423 break;
5424
5425 case 254: /* DataEnum: ENUM IDENTIFIER LBRACE Enum_Block Trail_Comma_RBrace */
5426 #line 1837 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5427 {
5428 ASTDataEnum* en = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5429 en->location = (*yylocp);
5430 ASTString* identifier = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5431 auto custom_typedef = new ASTCustomDataTypeDef(NULL, identifier, en, (*yylocp));
5432 custom_typedef->doc_comment = std::move(identifier->doc_comment);
5433 (*yyvalp) = custom_typedef;}
5434 #line 5435 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5435 break;
5436
5437 case 255: /* Enum_Block: Enum_Block COMMA Data_Element */
5438 #line 1846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5439 {
5440 ASTDataEnum* list = (ASTDataEnum*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5441 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5442 list->addDeclaration(element);
5443 (*yyvalp) = list;}
5444 #line 5445 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5445 break;
5446
5447 case 256: /* Enum_Block: Data_Element */
5448 #line 1851 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5449 {
5450 ASTDataDecl* element = (ASTDataDecl*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5451 ASTDataEnum* list = new ASTDataEnum((*yylocp));
5452 list->addDeclaration(element);
5453 (*yyvalp) = list;}
5454 #line 5455 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5455 break;
5456
5457 case 257: /* ScopeRes: SCOPERES */
5458 #line 1903 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5459 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5460 #line 5461 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5461 break;
5462
5463 case 258: /* Identifier_List: Mixed_Identifier_List */
5464 #line 1908 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5465 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5466 #line 5467 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5467 break;
5468
5469 case 259: /* Identifier_List: idlist_scopres */
5470 #line 1909 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5471 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5472 #line 5473 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5473 break;
5474
5475 case 260: /* Identifier_List: idlist_dot */
5476 #line 1910 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5477 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5478 #line 5479 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5479 break;
5480
5481 case 261: /* Identifier_List: Ambigious_Iden_List */
5482 #line 1911 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5483 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5484 #line 5485 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5485 break;
5486
5487 case 262: /* Scoperes_Identifier_List: idlist_scopres */
5488 #line 1915 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5489 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5490 #line 5491 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5491 break;
5492
5493 case 263: /* Scoperes_Identifier_List: Ambigious_Iden_List */
5494 #line 1916 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5495 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5496 #line 5497 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5497 break;
5498
5499 case 264: /* Mixed_Identifier_List: Mixed_Identifier_List DOT Identifier */
5500 #line 1925 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5501 {
5502 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5503 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5504 identifier->components.push_back(name->getValue());
5505 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5506 identifier->delimiters.push_back(".");
5507 identifier->location = (*yylocp);
5508 (*yyvalp) = identifier;}
5509 #line 5510 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5510 break;
5511
5512 case 265: /* Mixed_Identifier_List: idlist_scopres DOT Identifier */
5513 #line 1933 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5514 {
5515 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5516 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5517 identifier->components.push_back(name->getValue());
5518 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5519 identifier->delimiters.push_back(".");
5520 identifier->location = (*yylocp);
5521 (*yyvalp) = identifier;}
5522 #line 5523 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5523 break;
5524
5525 case 266: /* Mixed_Identifier_List: Mixed_Identifier_List ScopeRes Identifier */
5526 #line 1941 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5527 {
5528 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5529 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5530 identifier->components.push_back(name->getValue());
5531 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5532 identifier->delimiters.push_back("::");
5533 identifier->location = (*yylocp);
5534 (*yyvalp) = identifier;}
5535 #line 5536 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5536 break;
5537
5538 case 267: /* Mixed_Identifier_List: idlist_dot ScopeRes Identifier */
5539 #line 1949 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5540 {
5541 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5542 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5543 identifier->components.push_back(name->getValue());
5544 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5545 identifier->delimiters.push_back("::");
5546 identifier->location = (*yylocp);
5547 (*yyvalp) = identifier;}
5548 #line 5549 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5549 break;
5550
5551 case 268: /* idlist_scopres: idlist_scopres ScopeRes Identifier */
5552 #line 1960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5553 {
5554 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5555 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5556 identifier->components.push_back(name->getValue());
5557 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5558 identifier->delimiters.push_back("::");
5559 identifier->location = (*yylocp);
5560 (*yyvalp) = identifier;}
5561 #line 5562 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5562 break;
5563
5564 case 269: /* idlist_scopres: Ambigious_Iden_List ScopeRes Identifier */
5565 #line 1968 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5566 {
5567 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5568 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5569 identifier->components.push_back(name->getValue());
5570 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5571 identifier->delimiters.push_back("::");
5572 identifier->location = (*yylocp);
5573 (*yyvalp) = identifier;}
5574 #line 5575 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5575 break;
5576
5577 case 270: /* idlist_scopres: ScopeRes Ambigious_Iden_List */
5578 #line 1976 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5579 {
5580 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5581 identifier->noUsing = true;
5582 (*yyvalp) = identifier;}
5583 #line 5584 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5584 break;
5585
5586 case 271: /* idlist_dot: idlist_dot DOT Identifier */
5587 #line 1983 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5588 {
5589 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5590 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5591 identifier->components.push_back(name->getValue());
5592 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5593 identifier->delimiters.push_back(".");
5594 identifier->location = (*yylocp);
5595 (*yyvalp) = identifier;}
5596 #line 5597 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5597 break;
5598
5599 case 272: /* idlist_dot: Ambigious_Iden_List DOT Identifier */
5600 #line 1991 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5601 {
5602 ASTExprIdentifier* identifier = (ASTExprIdentifier*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5603 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5604 identifier->components.push_back(name->getValue());
5605 identifier->componentNodes.push_back(std::shared_ptr<ASTString>(name));
5606 identifier->delimiters.push_back(".");
5607 identifier->location = (*yylocp);
5608 (*yyvalp) = identifier;}
5609 #line 5610 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5610 break;
5611
5612 case 273: /* Ambigious_Iden_List: Identifier */
5613 #line 2002 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5614 {
5615 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5616 ASTExprIdentifier* identifier = new ASTExprIdentifier(std::shared_ptr<ASTString>(name), (*yylocp));
5617 identifier->doc_comment = std::move(name->doc_comment);
5618 if (!first_identifier_for_line) first_identifier_for_line = identifier;
5619 (*yyvalp) = identifier;}
5620 #line 5621 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5621 break;
5622
5623 case 274: /* Identifier: IDENTIFIER */
5624 #line 2011 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5625 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5626 #line 5627 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5627 break;
5628
5629 case 275: /* Func_Left: Expr_Arrow */
5630 #line 2015 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5631 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5632 #line 5633 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5633 break;
5634
5635 case 276: /* Func_Left: Identifier_List */
5636 #line 2016 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5637 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5638 #line 5639 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5639 break;
5640
5641 case 277: /* Function_Call: NEW Identifier_List LPAREN RPAREN */
5642 #line 2020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5643 {
5644 ASTExprCall* call = new ASTExprCall((*yylocp));
5645 call->setConstructor(true);
5646 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5647 call->left = left;
5648 call->location = (*yylocp);
5649 (*yyvalp) = call;}
5650 #line 5651 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5651 break;
5652
5653 case 278: /* Function_Call: NEW Identifier_List LPAREN Function_Call_Parameters RPAREN */
5654 #line 2027 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5655 {
5656 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5657 call->setConstructor(true);
5658 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5659 call->left = left;
5660 call->location = (*yylocp);
5661 (*yyvalp) = call;}
5662 #line 5663 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5663 break;
5664
5665 case 279: /* Function_Call: Func_Left LPAREN RPAREN */
5666 #line 2034 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5667 {
5668 ASTExprCall* call = new ASTExprCall((*yylocp));
5669 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5670 call->left = left;
5671 call->location = (*yylocp);
5672 (*yyvalp) = call;}
5673 #line 5674 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5674 break;
5675
5676 case 280: /* Function_Call: Func_Left LPAREN Function_Call_Parameters RPAREN */
5677 #line 2040 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5678 {
5679 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
5680 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
5681 call->left = left;
5682 call->location = (*yylocp);
5683 (*yyvalp) = call;}
5684 #line 5685 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5685 break;
5686
5687 case 281: /* Function_Call_Parameters: Function_Call_Parameters COMMA Expression */
5688 #line 2049 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5689 {
5690 ASTExprCall* call = (ASTExprCall*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5691 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5692 call->parameters.push_back(e);
5693 call->location = (*yylocp);
5694 (*yyvalp) = call;}
5695 #line 5696 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5696 break;
5697
5698 case 282: /* Function_Call_Parameters: Expression */
5699 #line 2055 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5700 {
5701 ASTExprCall* call = new ASTExprCall((*yylocp));
5702 ASTExpr* e = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5703 call->parameters.push_back(e);
5704 (*yyvalp) = call;}
5705 #line 5706 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5706 break;
5707
5708 case 283: /* Expr_1: Identifier_List */
5709 #line 2067 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5710 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5711 #line 5712 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5712 break;
5713
5714 case 284: /* Expr_1: Literal */
5715 #line 2068 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5716 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5717 #line 5718 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5718 break;
5719
5720 case 285: /* Expr_1: LPAREN Expression RPAREN */
5721 #line 2069 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5722 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;}
5723 #line 5724 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5724 break;
5725
5726 case 286: /* Expr_2: Expr_1 */
5727 #line 2071 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5728 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5729 #line 5730 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5730 break;
5731
5732 case 287: /* Expr_2: LT DataType GT Expr_2 */
5733 #line 2081 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5734 {
5735 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5736 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5737 ASTExprCast* cast = new ASTExprCast(type, expr, (*yylocp));
5738 (*yyvalp) = cast;}
5739 #line 5740 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5740 break;
5741
5742 case 288: /* Expr_Arrow: Expr_3 ARROW IDENTIFIER */
5743 #line 2089 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5744 {
5745 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
5746 ASTString* right = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
5747 (*yyvalp) = new ASTExprArrow(left, right, (*yylocp));}
5748 #line 5749 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5749 break;
5750
5751 case 289: /* Expr_3: Expr_2 */
5752 #line 2095 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5753 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5754 #line 5755 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5755 break;
5756
5757 case 290: /* Expr_3: Expr_3 INCREMENT */
5758 #line 2097 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5759 {(*yyvalp) = new ASTExprIncrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5760 #line 5761 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5761 break;
5762
5763 case 291: /* Expr_3: Expr_3 DECREMENT */
5764 #line 2099 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5765 {(*yyvalp) = new ASTExprDecrement(false, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));}
5766 #line 5767 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5767 break;
5768
5769 case 292: /* Expr_3: Function_Call */
5770 #line 2101 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5771 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5772 #line 5773 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5773 break;
5774
5775 case 293: /* Expr_3: Expr_3 LBRACKET Expression RBRACKET */
5776 #line 2103 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5777 {
5778 (*yyvalp) = new ASTExprIndex((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval, (*yylocp));;}
5779 #line 5780 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5780 break;
5781
5782 case 294: /* Expr_3: Expr_Arrow */
5783 #line 2106 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5784 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5785 #line 5786 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5786 break;
5787
5788 case 295: /* Expr_4: Expr_3 */
5789 #line 2109 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5790 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5791 #line 5792 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5792 break;
5793
5794 case 296: /* Expr_4: INCREMENT Expr_4 */
5795 #line 2111 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5796 {(*yyvalp) = new ASTExprIncrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5797 #line 5798 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5798 break;
5799
5800 case 297: /* Expr_4: DECREMENT Expr_4 */
5801 #line 2113 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5802 {(*yyvalp) = new ASTExprDecrement(true, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5803 #line 5804 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5804 break;
5805
5806 case 298: /* Expr_4: MINUS Expr_4 */
5807 #line 2115 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5808 {(*yyvalp) = new ASTExprNegate((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5809 #line 5810 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5810 break;
5811
5812 case 299: /* Expr_4: NOT Expr_4 */
5813 #line 2117 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5814 {(*yyvalp) = new ASTExprNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5815 #line 5816 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5816 break;
5817
5818 case 300: /* Expr_4: BITNOT Expr_4 */
5819 #line 2119 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5820 {(*yyvalp) = new ASTExprBitNot((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5821 #line 5822 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5822 break;
5823
5824 case 301: /* Expr_5: Expr_4 */
5825 #line 2122 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5826 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5827 #line 5828 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5828 break;
5829
5830 case 302: /* Expr_5: Expr_5 EXPN Expr_4 */
5831 #line 2124 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5832 {(*yyvalp) = new ASTExprExpn((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5833 #line 5834 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5834 break;
5835
5836 case 303: /* Expr_6: Expr_5 */
5837 #line 2127 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5838 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5839 #line 5840 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5840 break;
5841
5842 case 304: /* Expr_6: Expr_6 TIMES Expr_5 */
5843 #line 2129 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5844 {(*yyvalp) = new ASTExprTimes((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5845 #line 5846 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5846 break;
5847
5848 case 305: /* Expr_6: Expr_6 DIVIDE Expr_5 */
5849 #line 2131 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5850 {(*yyvalp) = new ASTExprDivide((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5851 #line 5852 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5852 break;
5853
5854 case 306: /* Expr_6: Expr_6 MODULO Expr_5 */
5855 #line 2133 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5856 {(*yyvalp) = new ASTExprModulo((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5857 #line 5858 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5858 break;
5859
5860 case 307: /* Expr_7: Expr_6 */
5861 #line 2136 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5862 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5863 #line 5864 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5864 break;
5865
5866 case 308: /* Expr_7: Expr_7 PLUS Expr_6 */
5867 #line 2138 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5868 {(*yyvalp) = new ASTExprPlus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5869 #line 5870 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5870 break;
5871
5872 case 309: /* Expr_7: Expr_7 MINUS Expr_6 */
5873 #line 2140 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5874 {(*yyvalp) = new ASTExprMinus((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5875 #line 5876 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5876 break;
5877
5878 case 310: /* Expr_8: Expr_7 */
5879 #line 2143 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5880 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5881 #line 5882 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5882 break;
5883
5884 case 311: /* Expr_8: Expr_8 LSHIFT Expr_7 */
5885 #line 2145 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5886 {(*yyvalp) = new ASTExprLShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5887 #line 5888 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5888 break;
5889
5890 case 312: /* Expr_8: Expr_8 RSHIFT Expr_7 */
5891 #line 2147 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5892 {(*yyvalp) = new ASTExprRShift((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5893 #line 5894 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5894 break;
5895
5896 case 313: /* Expr_9: Expr_8 */
5897 #line 2150 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5898 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5899 #line 5900 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5900 break;
5901
5902 case 314: /* Expr_9: Expr_9 LT Expr_8 */
5903 #line 2152 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5904 {(*yyvalp) = new ASTExprLT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5905 #line 5906 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5906 break;
5907
5908 case 315: /* Expr_9: Expr_9 LE Expr_8 */
5909 #line 2154 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5910 {(*yyvalp) = new ASTExprLE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5911 #line 5912 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5912 break;
5913
5914 case 316: /* Expr_9: Expr_9 GT Expr_8 */
5915 #line 2156 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5916 {(*yyvalp) = new ASTExprGT((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5917 #line 5918 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5918 break;
5919
5920 case 317: /* Expr_9: Expr_9 GE Expr_8 */
5921 #line 2158 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5922 {(*yyvalp) = new ASTExprGE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5923 #line 5924 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5924 break;
5925
5926 case 318: /* Expr_10: Expr_9 */
5927 #line 2161 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5928 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5929 #line 5930 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5930 break;
5931
5932 case 319: /* Expr_10: Expr_10 EQ Expr_9 */
5933 #line 2163 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5934 {(*yyvalp) = new ASTExprEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5935 #line 5936 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5936 break;
5937
5938 case 320: /* Expr_10: Expr_10 NE Expr_9 */
5939 #line 2165 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5940 {(*yyvalp) = new ASTExprNE((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5941 #line 5942 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5942 break;
5943
5944 case 321: /* Expr_10: Expr_10 APPXEQUAL Expr_9 */
5945 #line 2167 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5946 {(*yyvalp) = new ASTExprAppxEQ((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5947 #line 5948 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5948 break;
5949
5950 case 322: /* Expr_10: Expr_10 XOR Expr_9 */
5951 #line 2169 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5952 {(*yyvalp) = new ASTExprXOR((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5953 #line 5954 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5954 break;
5955
5956 case 323: /* Expr_11: Expr_10 */
5957 #line 2172 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5958 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5959 #line 5960 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5960 break;
5961
5962 case 324: /* Expr_11: Expr_11 BITAND Expr_10 */
5963 #line 2174 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5964 {(*yyvalp) = new ASTExprBitAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5965 #line 5966 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5966 break;
5967
5968 case 325: /* Expr_12: Expr_11 */
5969 #line 2177 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5970 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5971 #line 5972 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5972 break;
5973
5974 case 326: /* Expr_12: Expr_12 BITXOR Expr_11 */
5975 #line 2179 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5976 {(*yyvalp) = new ASTExprBitXor((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5977 #line 5978 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5978 break;
5979
5980 case 327: /* Expr_13: Expr_12 */
5981 #line 2182 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5982 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5983 #line 5984 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5984 break;
5985
5986 case 328: /* Expr_13: Expr_13 BITOR Expr_12 */
5987 #line 2184 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5988 {(*yyvalp) = new ASTExprBitOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
5989 #line 5990 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5990 break;
5991
5992 case 329: /* Expr_14: Expr_13 */
5993 #line 2187 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
5994 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
5995 #line 5996 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
5996 break;
5997
5998 case 330: /* Expr_14: Expr_14 AND Expr_13 */
5999 #line 2189 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6000 {(*yyvalp) = new ASTExprAnd((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6001 #line 6002 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6002 break;
6003
6004 case 331: /* Expr_15: Expr_14 */
6005 #line 2192 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6006 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6007 #line 6008 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6008 break;
6009
6010 case 332: /* Expr_15: Expr_15 OR Expr_14 */
6011 #line 2194 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6012 {(*yyvalp) = new ASTExprOr((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6013 #line 6014 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6014 break;
6015
6016 case 333: /* Expr_16: Expr_15 */
6017 #line 2197 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6018 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6019 #line 6020 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6020 break;
6021
6022 case 334: /* Expr_16: Expr_15 QMARK Expr_16 COLON Expr_16 */
6023 #line 2200 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6024 {
6025 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6026 ASTExpr* middle = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6027 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6028 (*yyvalp) = new ASTTernaryExpr(left, middle, right, (*yylocp));
6029 }
6030 #line 6031 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6031 break;
6032
6033 case 335: /* Expr_17: Expr_16 */
6034 #line 2208 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6035 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6036 #line 6037 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6037 break;
6038
6039 case 336: /* Expr_17: DELETE Expr_17 */
6040 #line 2209 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6041 {
6042 ASTExprDelete* del = new ASTExprDelete((*yylocp));
6043 ASTExpr* operand = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6044 del->operand = operand;
6045 (*yyvalp) = del;}
6046 #line 6047 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6047 break;
6048
6049 case 337: /* Expr_18: Expr_17 */
6050 #line 2216 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6051 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6052 #line 6053 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6053 break;
6054
6055 case 338: /* Expr_18: Expr_17 ASSIGN Expr_18 */
6056 #line 2218 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6057 {(*yyvalp) = new ASTExprAssign((ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval, (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval, (*yylocp));}
6058 #line 6059 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6059 break;
6060
6061 case 339: /* Expr_18: Expr_17 PLUSASSIGN Expr_18 */
6062 #line 2220 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6063 {
6064 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6065 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6066 (*yyvalp) = new ASTExprAssign(left, new ASTExprPlus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6067 #line 6068 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6068 break;
6069
6070 case 340: /* Expr_18: Expr_17 MINUSASSIGN Expr_18 */
6071 #line 2225 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6072 {
6073 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6074 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6075 (*yyvalp) = new ASTExprAssign(left, new ASTExprMinus(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6076 #line 6077 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6077 break;
6078
6079 case 341: /* Expr_18: Expr_17 TIMESASSIGN Expr_18 */
6080 #line 2230 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6081 {
6082 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6083 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6084 (*yyvalp) = new ASTExprAssign(left, new ASTExprTimes(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6085 #line 6086 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6086 break;
6087
6088 case 342: /* Expr_18: Expr_17 DIVIDEASSIGN Expr_18 */
6089 #line 2235 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6090 {
6091 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6092 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6093 (*yyvalp) = new ASTExprAssign(left, new ASTExprDivide(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6094 #line 6095 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6095 break;
6096
6097 case 343: /* Expr_18: Expr_17 MODULOASSIGN Expr_18 */
6098 #line 2240 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6099 {
6100 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6101 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6102 (*yyvalp) = new ASTExprAssign(left, new ASTExprModulo(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6103 #line 6104 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6104 break;
6105
6106 case 344: /* Expr_18: Expr_17 LSHIFTASSIGN Expr_18 */
6107 #line 2245 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6108 {
6109 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6110 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6111 (*yyvalp) = new ASTExprAssign(left, new ASTExprLShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6112 #line 6113 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6113 break;
6114
6115 case 345: /* Expr_18: Expr_17 RSHIFTASSIGN Expr_18 */
6116 #line 2250 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6117 {
6118 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6119 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6120 (*yyvalp) = new ASTExprAssign(left, new ASTExprRShift(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6121 #line 6122 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6122 break;
6123
6124 case 346: /* Expr_18: Expr_17 BITANDASSIGN Expr_18 */
6125 #line 2255 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6126 {
6127 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6128 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6129 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6130 #line 6131 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6131 break;
6132
6133 case 347: /* Expr_18: Expr_17 BITNOTASSIGN Expr_18 */
6134 #line 2261 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6135 {
6136 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6137 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6138 ASTExprBitAnd* rval = new ASTExprBitAnd(left->clone(), new ASTExprBitNot(right, (*yylocp)), (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc));
6139 (*yyvalp) = new ASTExprAssign(left, rval, (*yylocp));}
6140 #line 6141 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6141 break;
6142
6143 case 348: /* Expr_18: Expr_17 BITXORASSIGN Expr_18 */
6144 #line 2267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6145 {
6146 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6147 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6148 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitXor(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6149 #line 6150 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6150 break;
6151
6152 case 349: /* Expr_18: Expr_17 BITORASSIGN Expr_18 */
6153 #line 2272 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6154 {
6155 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6156 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6157 (*yyvalp) = new ASTExprAssign(left, new ASTExprBitOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6158 #line 6159 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6159 break;
6160
6161 case 350: /* Expr_18: Expr_17 ANDASSIGN Expr_18 */
6162 #line 2277 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6163 {
6164 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6165 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6166 (*yyvalp) = new ASTExprAssign(left, new ASTExprAnd(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6167 #line 6168 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6168 break;
6169
6170 case 351: /* Expr_18: Expr_17 ORASSIGN Expr_18 */
6171 #line 2282 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6172 {
6173 ASTExpr* left = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6174 ASTExpr* right = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6175 (*yyvalp) = new ASTExprAssign(left, new ASTExprOr(left->clone(), right, (YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yyloc)), (*yylocp));}
6176 #line 6177 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6177 break;
6178
6179 case 352: /* Expression: Expr_18 */
6180 #line 2288 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6181 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6182 #line 6183 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6183 break;
6184
6185 case 353: /* Statement_Expression: Expression */
6186 #line 2291 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6187 {
6188 ASTExpr* expr = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6189 expr = handle_statement_expr(expr);
6190 (*yyvalp) = expr;}
6191 #line 6192 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6192 break;
6193
6194 case 354: /* Expression_Constant: Expression */
6195 #line 2298 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6196 {
6197 ASTExpr* content = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6198 (*yyvalp) = new ASTExprConst(content, (*yylocp));}
6199 #line 6200 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6200 break;
6201
6202 case 355: /* Expression_Const_Range: Expression_Range */
6203 #line 2304 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6204 {
6205 ASTRange* range = (ASTRange*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6206 ASTExpr* start = range->start.release();
6207 range->start = new ASTExprConst(start, start->location);
6208 ASTExpr* end = range->end.release();
6209 range->end = new ASTExprConst(end, end->location);
6210 (*yyvalp) = range;
6211 }
6212 #line 6213 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6213 break;
6214
6215 case 356: /* Expression_Range: Expression RANGE Expression */
6216 #line 2315 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6217 {
6218 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6219 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6220 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6221 #line 6222 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6222 break;
6223
6224 case 357: /* Expression_Range: Expression RANGE_LR Expression */
6225 #line 2320 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6226 {
6227 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6228 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6229 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6230 #line 6231 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6231 break;
6232
6233 case 358: /* Expression_Range: Expression RANGE_L Expression */
6234 #line 2325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6235 {
6236 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6237 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6238 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6239 #line 6240 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6240 break;
6241
6242 case 359: /* Expression_Range: Expression RANGE_R Expression */
6243 #line 2330 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6244 {
6245 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6246 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6247 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6248 #line 6249 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6249 break;
6250
6251 case 360: /* Expression_Range: Expression RANGE_N Expression */
6252 #line 2335 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6253 {
6254 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6255 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6256 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6257 #line 6258 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6258 break;
6259
6260 case 361: /* Expression_Range: LBRACKET Expression COMMA Expression RBRACKET */
6261 #line 2340 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6262 {
6263 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6264 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6265 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_LR, (*yylocp));}
6266 #line 6267 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6267 break;
6268
6269 case 362: /* Expression_Range: LBRACKET Expression COMMA Expression RPAREN */
6270 #line 2345 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6271 {
6272 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6273 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6274 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_L, (*yylocp));}
6275 #line 6276 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6276 break;
6277
6278 case 363: /* Expression_Range: LPAREN Expression COMMA Expression RBRACKET */
6279 #line 2350 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6280 {
6281 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6282 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6283 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_R, (*yylocp));}
6284 #line 6285 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6285 break;
6286
6287 case 364: /* Expression_Range: LPAREN Expression COMMA Expression RPAREN */
6288 #line 2355 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6289 {
6290 ASTExpr* start = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-3)].yystate.yysemantics.yyval;
6291 ASTExpr* end = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6292 (*yyvalp) = new ASTRange(start, end, ASTRange::RANGE_N, (*yylocp));}
6293 #line 6294 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6294 break;
6295
6296 case 365: /* Literal: NUMBER */
6297 #line 2365 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6298 {
6299 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6300 (*yyvalp) = new ASTNumberLiteral(val, (*yylocp));}
6301 #line 6302 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6302 break;
6303
6304 case 366: /* Literal: LONGNUMBER */
6305 #line 2368 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6306 {
6307 ASTFloat* val = (ASTFloat*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6308 (*yyvalp) = new ASTLongNumberLiteral(val, (*yylocp));}
6309 #line 6310 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6310 break;
6311
6312 case 367: /* Literal: SINGLECHAR */
6313 #line 2371 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6314 {
6315 ASTString* as = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6316 ASTFloat* number = new ASTFloat(int(as->getValue().at(1)), 0, (*yylocp));
6317 (*yyvalp) = new ASTCharLiteral(number, (*yylocp));}
6318 #line 6319 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6319 break;
6320
6321 case 368: /* Literal: Literal_String */
6322 #line 2375 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6323 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6324 #line 6325 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6325 break;
6326
6327 case 369: /* Literal: Literal_Bool */
6328 #line 2376 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6329 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6330 #line 6331 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6331 break;
6332
6333 case 370: /* Literal: Literal_Array */
6334 #line 2377 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6335 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6336 #line 6337 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6337 break;
6338
6339 case 371: /* Literal: OPTIONVALUE LPAREN IDENTIFIER RPAREN */
6340 #line 2378 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6341 {
6342 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6343 (*yyvalp) = new ASTOptionValue(name->getValue(), (*yylocp));
6344 delete name;}
6345 #line 6346 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6346 break;
6347
6348 case 372: /* Literal: ISINCLUDED LPAREN IMPORTSTRING RPAREN */
6349 #line 2382 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6350 {
6351 ASTString* name = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6352 (*yyvalp) = new ASTIsIncluded(name->getValue(), (*yylocp));
6353 delete name;}
6354 #line 6355 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6355 break;
6356
6357 case 373: /* QuotedString: QuotedString QUOTEDSTRING */
6358 #line 2389 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6359 {
6360 ASTString* str = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6361 ASTString* rawstr = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6362 str->append(rawstr->getValue());
6363 delete rawstr;
6364 (*yyvalp) = str;}
6365 #line 6366 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6366 break;
6367
6368 case 374: /* QuotedString: QUOTEDSTRING */
6369 #line 2395 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6370 {(*yyvalp) = YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;}
6371 #line 6372 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6372 break;
6373
6374 case 375: /* Literal_String: QuotedString */
6375 #line 2399 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6376 {
6377 ASTString* rawstring = (ASTString*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6378 ASTStringLiteral* str = new ASTStringLiteral(*rawstring);
6379 delete rawstring;
6380 (*yyvalp) = str;}
6381 #line 6382 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6382 break;
6383
6384 case 376: /* Literal_Bool: ZTRUE */
6385 #line 2408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6386 {(*yyvalp) = new ASTBoolLiteral(true, (*yylocp));}
6387 #line 6388 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6388 break;
6389
6390 case 377: /* Literal_Bool: ZFALSE */
6391 #line 2409 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6392 {(*yyvalp) = new ASTBoolLiteral(false, (*yylocp));}
6393 #line 6394 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6394 break;
6395
6396 case 378: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE Literal_Array_Body Trail_Comma_RBrace */
6397 #line 2416 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6398 {
6399 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-7)].yystate.yysemantics.yyval;
6400 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-5)].yystate.yysemantics.yyval;
6401 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6402 al->type = type;
6403 al->size = size;
6404 al->location = (*yylocp);
6405 (*yyvalp) = al;
6406 }
6407 #line 6408 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6408 break;
6409
6410 case 379: /* Literal_Array: LT DataType LBRACKET Expression_Constant RBRACKET GT LBRACE RBRACE */
6411 #line 2428 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6412 {
6413 ASTDataType* type = (ASTDataType*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-6)].yystate.yysemantics.yyval;
6414 ASTExpr* size = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-4)].yystate.yysemantics.yyval;
6415 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6416 al->type = type;
6417 al->size = size;
6418 (*yyvalp) = al;
6419 }
6420 #line 6421 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6421 break;
6422
6423 case 380: /* Literal_Array: LBRACE Literal_Array_Body Trail_Comma_RBrace */
6424 #line 2437 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6425 {
6426 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-1)].yystate.yysemantics.yyval;
6427 al->location = (*yylocp);
6428 (*yyvalp) = al;}
6429 #line 6430 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6430 break;
6431
6432 case 381: /* Literal_Array_Body: Literal_Array_Body COMMA Expression */
6433 #line 2444 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6434 {
6435 ASTArrayLiteral* al = (ASTArrayLiteral*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (-2)].yystate.yysemantics.yyval;
6436 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6437 al->elements.push_back(element);
6438 (*yyvalp) = al;}
6439 #line 6440 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6440 break;
6441
6442 case 382: /* Literal_Array_Body: Expression */
6443 #line 2449 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
6444 {
6445 ASTExpr* element = (ASTExpr*)YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL (0)].yystate.yysemantics.yyval;
6446 ASTArrayLiteral* al = new ASTArrayLiteral((*yylocp));
6447 al->elements.push_back(element);
6448 (*yyvalp) = al;}
6449 #line 6450 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6450 break;
6451
6452
6453 #line 6454 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/y.tab.cpp"
6454
6455 default: break;
6456 }
6457 YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), yyvalp, yylocp);
6458
6459 1912519773 return yyok;
6460 # undef yyerrok
6461 # undef YYABORT
6462 # undef YYACCEPT
6463 # undef YYNOMEM
6464 # undef YYERROR
6465 # undef YYBACKUP
6466 # undef yyclearin
6467 # undef YYRECOVERING
6468 }
6469
6470
6471 static void
6472 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
6473 {
6474 YY_USE (yy0);
6475 YY_USE (yy1);
6476
6477 switch (yyn)
6478 {
6479
6480 default: break;
6481 }
6482 }
6483
6484 /* Bison grammar-table manipulation. */
6485
6486 /*-----------------------------------------------.
6487 | Release the memory associated to this symbol. |
6488 `-----------------------------------------------*/
6489
6490 static void
6491 232504 yydestruct (const char *yymsg,
6492 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, std::unique_ptr<ZScript::ASTFile>& root)
6493 {
6494 YY_USE (yyvaluep);
6495 YY_USE (yylocationp);
6496 232504 YY_USE (root);
6497
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 232504 times.
232504 if (!yymsg)
6498 yymsg = "Deleting";
6499 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6500
6501 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6502 YY_USE (yykind);
6503 YY_IGNORE_MAYBE_UNINITIALIZED_END
6504 232504 }
6505
6506 /** Number of symbols composing the right hand side of rule #RULE. */
6507 static inline int
6508 1912543660 yyrhsLength (yyRuleNum yyrule)
6509 {
6510 1912543660 return yyr2[yyrule];
6511 }
6512
6513 static void
6514 232448 yydestroyGLRState (char const *yymsg, yyGLRState *yys, std::unique_ptr<ZScript::ASTFile>& root)
6515 {
6516
1/2
✓ Branch 0 taken 232448 times.
✗ Branch 1 not taken.
232448 if (yys->yyresolved)
6517 464896 yydestruct (yymsg, yy_accessing_symbol (yys->yylrState),
6518 232448 &yys->yysemantics.yyval, &yys->yyloc, root);
6519 else
6520 {
6521 #if YYDEBUG
6522 if (yydebug)
6523 {
6524 if (yys->yysemantics.yyfirstVal)
6525 YY_FPRINTF ((stderr, "%s unresolved", yymsg));
6526 else
6527 YY_FPRINTF ((stderr, "%s incomplete", yymsg));
6528 YY_SYMBOL_PRINT ("", yy_accessing_symbol (yys->yylrState), YY_NULLPTR, &yys->yyloc);
6529 }
6530 #endif
6531
6532 if (yys->yysemantics.yyfirstVal)
6533 {
6534 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
6535 yyGLRState *yyrh;
6536 int yyn;
6537 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
6538 yyn > 0;
6539 yyrh = yyrh->yypred, yyn -= 1)
6540 yydestroyGLRState (yymsg, yyrh, root);
6541 }
6542 }
6543 232448 }
6544
6545 #define yypact_value_is_default(Yyn) \
6546 ((Yyn) == YYPACT_NINF)
6547
6548 /** True iff LR state YYSTATE has only a default reduction (regardless
6549 * of token). */
6550 static inline yybool
6551 3608169852 yyisDefaultedState (yy_state_t yystate)
6552 {
6553 3608169852 return yypact_value_is_default (yypact[yystate]);
6554 }
6555
6556 /** The default reduction for YYSTATE, assuming it has one. */
6557 static inline yyRuleNum
6558 891594828 yydefaultAction (yy_state_t yystate)
6559 {
6560 891594828 return yydefact[yystate];
6561 }
6562
6563 #define yytable_value_is_error(Yyn) \
6564 0
6565
6566 /** The action to take in YYSTATE on seeing YYTOKEN.
6567 * Result R means
6568 * R < 0: Reduce on rule -R.
6569 * R = 0: Error.
6570 * R > 0: Shift to state R.
6571 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
6572 * of conflicting reductions.
6573 */
6574 static inline int
6575 1358289472 yygetLRActions (yy_state_t yystate, yysymbol_kind_t yytoken, const short** yyconflicts)
6576 {
6577 1358289472 int yyindex = yypact[yystate] + yytoken;
6578
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1358289472 times.
1358289472 if (yytoken == YYSYMBOL_YYerror)
6579 {
6580 // This is the error token.
6581 *yyconflicts = yyconfl;
6582 return 0;
6583 }
6584
2/2
✓ Branch 0 taken 1013997410 times.
✓ Branch 1 taken 344292062 times.
2716578944 else if (yyisDefaultedState (yystate)
6585
3/6
✓ Branch 0 taken 1358289472 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1358289472 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1358289472 times.
✗ Branch 5 not taken.
1358289472 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
6586 {
6587 1013997410 *yyconflicts = yyconfl;
6588 1013997410 return -yydefact[yystate];
6589 }
6590 else if (! yytable_value_is_error (yytable[yyindex]))
6591 {
6592 344292062 *yyconflicts = yyconfl + yyconflp[yyindex];
6593 344292062 return yytable[yyindex];
6594 }
6595 else
6596 {
6597 *yyconflicts = yyconfl + yyconflp[yyindex];
6598 return 0;
6599 }
6600 1358289472 }
6601
6602 /** Compute post-reduction state.
6603 * \param yystate the current state
6604 * \param yysym the nonterminal to push on the stack
6605 */
6606 static inline yy_state_t
6607 1912543660 yyLRgotoState (yy_state_t yystate, yysymbol_kind_t yysym)
6608 {
6609 1912543660 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
6610
5/6
✓ Branch 0 taken 1451893926 times.
✓ Branch 1 taken 460649734 times.
✓ Branch 2 taken 1451893926 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 301794766 times.
✓ Branch 5 taken 1150099160 times.
1912543660 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
6611 301794766 return yytable[yyr];
6612 else
6613 1610748894 return yydefgoto[yysym - YYNTOKENS];
6614 1912543660 }
6615
6616 static inline yybool
6617 1358281632 yyisShiftAction (int yyaction)
6618 {
6619 1358281632 return 0 < yyaction;
6620 }
6621
6622 static inline yybool
6623 1020948888 yyisErrorAction (int yyaction)
6624 {
6625 1020948888 return yyaction == 0;
6626 }
6627
6628 /* GLRStates */
6629
6630 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
6631 * if YYISSTATE, and otherwise a semantic option. Callers should call
6632 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
6633 * headroom. */
6634
6635 static inline yyGLRStackItem*
6636 2250016348 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
6637 {
6638 2250016348 yyGLRStackItem* yynewItem = yystackp->yynextFree;
6639 2250016348 yystackp->yyspaceLeft -= 1;
6640 2250016348 yystackp->yynextFree += 1;
6641 2250016348 yynewItem->yystate.yyisState = yyisState;
6642 2250016348 return yynewItem;
6643 }
6644
6645 /** Add a new semantic action that will execute the action for rule
6646 * YYRULE on the semantic values in YYRHS to the list of
6647 * alternative actions for YYSTATE. Assumes that YYRHS comes from
6648 * stack #YYK of *YYSTACKP. */
6649 static void
6650 23887 yyaddDeferredAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyGLRState* yystate,
6651 yyGLRState* yyrhs, yyRuleNum yyrule)
6652 {
6653 23887 yySemanticOption* yynewOption =
6654 23887 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
6655 YY_ASSERT (!yynewOption->yyisState);
6656 23887 yynewOption->yystate = yyrhs;
6657 23887 yynewOption->yyrule = yyrule;
6658
1/2
✓ Branch 0 taken 23887 times.
✗ Branch 1 not taken.
23887 if (yystackp->yytops.yylookaheadNeeds[yyk])
6659 {
6660 23887 yynewOption->yyrawchar = yychar;
6661 23887 yynewOption->yyval = yylval;
6662 23887 yynewOption->yyloc = yylloc;
6663 23887 }
6664 else
6665 yynewOption->yyrawchar = TOK_YYEMPTY;
6666 23887 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
6667 23887 yystate->yysemantics.yyfirstVal = yynewOption;
6668
6669
1/2
✓ Branch 0 taken 23887 times.
✗ Branch 1 not taken.
23887 YY_RESERVE_GLRSTACK (yystackp);
6670 23887 }
6671
6672 /* GLRStacks */
6673
6674 /** Initialize YYSET to a singleton set containing an empty stack. */
6675 static yybool
6676 116057 yyinitStateSet (yyGLRStateSet* yyset)
6677 {
6678 116057 yyset->yysize = 1;
6679 116057 yyset->yycapacity = 16;
6680 116057 yyset->yystates
6681 232114 = YY_CAST (yyGLRState**,
6682 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6683 * sizeof yyset->yystates[0]));
6684
1/2
✓ Branch 0 taken 116057 times.
✗ Branch 1 not taken.
116057 if (! yyset->yystates)
6685 return yyfalse;
6686 116057 yyset->yystates[0] = YY_NULLPTR;
6687 116057 yyset->yylookaheadNeeds
6688 232114 = YY_CAST (yybool*,
6689 YYMALLOC (YY_CAST (YYSIZE_T, yyset->yycapacity)
6690 * sizeof yyset->yylookaheadNeeds[0]));
6691
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 116057 times.
116057 if (! yyset->yylookaheadNeeds)
6692 {
6693 YYFREE (yyset->yystates);
6694 return yyfalse;
6695 }
6696 232114 memset (yyset->yylookaheadNeeds,
6697 0,
6698 116057 YY_CAST (YYSIZE_T, yyset->yycapacity) * sizeof yyset->yylookaheadNeeds[0]);
6699 116057 return yytrue;
6700 116057 }
6701
6702 116057 static void yyfreeStateSet (yyGLRStateSet* yyset)
6703 {
6704 116057 YYFREE (yyset->yystates);
6705 116057 YYFREE (yyset->yylookaheadNeeds);
6706 116057 }
6707
6708 /** Initialize *YYSTACKP to a single empty stack, with total maximum
6709 * capacity for all stacks of YYSIZE. */
6710 static yybool
6711 116057 yyinitGLRStack (yyGLRStack* yystackp, YYPTRDIFF_T yysize)
6712 {
6713 116057 yystackp->yyerrState = 0;
6714 116057 yynerrs = 0;
6715 116057 yystackp->yyspaceLeft = yysize;
6716 116057 yystackp->yyitems
6717 232114 = YY_CAST (yyGLRStackItem*,
6718 YYMALLOC (YY_CAST (YYSIZE_T, yysize)
6719 * sizeof yystackp->yynextFree[0]));
6720
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 116057 times.
116057 if (!yystackp->yyitems)
6721 return yyfalse;
6722 116057 yystackp->yynextFree = yystackp->yyitems;
6723 116057 yystackp->yysplitPoint = YY_NULLPTR;
6724 116057 yystackp->yylastDeleted = YY_NULLPTR;
6725 116057 return yyinitStateSet (&yystackp->yytops);
6726 116057 }
6727
6728
6729 #if YYSTACKEXPANDABLE
6730 # define YYRELOC(YYFROMITEMS, YYTOITEMS, YYX, YYTYPE) \
6731 &((YYTOITEMS) \
6732 - ((YYFROMITEMS) - YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX))))->YYTYPE
6733
6734 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
6735 stack from outside should be considered invalid after this call.
6736 We always expand when there are 1 or fewer items left AFTER an
6737 allocation, so that we can avoid having external pointers exist
6738 across an allocation. */
6739 static void
6740 yyexpandGLRStack (yyGLRStack* yystackp)
6741 {
6742 yyGLRStackItem* yynewItems;
6743 yyGLRStackItem* yyp0, *yyp1;
6744 YYPTRDIFF_T yynewSize;
6745 YYPTRDIFF_T yyn;
6746 YYPTRDIFF_T yysize = yystackp->yynextFree - yystackp->yyitems;
6747 if (YYMAXDEPTH - YYHEADROOM < yysize)
6748 yyMemoryExhausted (yystackp);
6749 yynewSize = 2*yysize;
6750 if (YYMAXDEPTH < yynewSize)
6751 yynewSize = YYMAXDEPTH;
6752 yynewItems
6753 = YY_CAST (yyGLRStackItem*,
6754 YYMALLOC (YY_CAST (YYSIZE_T, yynewSize)
6755 * sizeof yynewItems[0]));
6756 if (! yynewItems)
6757 yyMemoryExhausted (yystackp);
6758 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
6759 0 < yyn;
6760 yyn -= 1, yyp0 += 1, yyp1 += 1)
6761 {
6762 *yyp1 = *yyp0;
6763 if (*YY_REINTERPRET_CAST (yybool *, yyp0))
6764 {
6765 yyGLRState* yys0 = &yyp0->yystate;
6766 yyGLRState* yys1 = &yyp1->yystate;
6767 if (yys0->yypred != YY_NULLPTR)
6768 yys1->yypred =
6769 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
6770 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
6771 yys1->yysemantics.yyfirstVal =
6772 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
6773 }
6774 else
6775 {
6776 yySemanticOption* yyv0 = &yyp0->yyoption;
6777 yySemanticOption* yyv1 = &yyp1->yyoption;
6778 if (yyv0->yystate != YY_NULLPTR)
6779 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
6780 if (yyv0->yynext != YY_NULLPTR)
6781 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
6782 }
6783 }
6784 if (yystackp->yysplitPoint != YY_NULLPTR)
6785 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
6786 yystackp->yysplitPoint, yystate);
6787
6788 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
6789 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
6790 yystackp->yytops.yystates[yyn] =
6791 YYRELOC (yystackp->yyitems, yynewItems,
6792 yystackp->yytops.yystates[yyn], yystate);
6793 YYFREE (yystackp->yyitems);
6794 yystackp->yyitems = yynewItems;
6795 yystackp->yynextFree = yynewItems + yysize;
6796 yystackp->yyspaceLeft = yynewSize - yysize;
6797 }
6798 #endif
6799
6800 static void
6801 116057 yyfreeGLRStack (yyGLRStack* yystackp)
6802 {
6803 116057 YYFREE (yystackp->yyitems);
6804 116057 yyfreeStateSet (&yystackp->yytops);
6805 116057 }
6806
6807 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
6808 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
6809 * YYS. */
6810 static inline void
6811 23887 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
6812 {
6813
3/4
✓ Branch 0 taken 23887 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 19939 times.
✓ Branch 3 taken 3948 times.
23887 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
6814 3948 yystackp->yysplitPoint = yys;
6815 23887 }
6816
6817 /** Invalidate stack #YYK in *YYSTACKP. */
6818 static inline void
6819 3920 yymarkStackDeleted (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
6820 {
6821
1/2
✓ Branch 0 taken 3920 times.
✗ Branch 1 not taken.
3920 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6822 3920 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
6823 3920 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
6824 3920 }
6825
6826 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
6827 only be done once after a deletion, and only when all other stacks have
6828 been deleted. */
6829 static void
6830 yyundeleteLastStack (yyGLRStack* yystackp)
6831 {
6832 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
6833 return;
6834 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
6835 yystackp->yytops.yysize = 1;
6836 YY_DPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
6837 yystackp->yylastDeleted = YY_NULLPTR;
6838 }
6839
6840 static inline void
6841 3976 yyremoveDeletes (yyGLRStack* yystackp)
6842 {
6843 YYPTRDIFF_T yyi, yyj;
6844 3976 yyi = yyj = 0;
6845
2/2
✓ Branch 0 taken 7896 times.
✓ Branch 1 taken 3976 times.
11872 while (yyj < yystackp->yytops.yysize)
6846 {
6847
2/2
✓ Branch 0 taken 3976 times.
✓ Branch 1 taken 3920 times.
7896 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
6848 {
6849
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3920 times.
3920 if (yyi == yyj)
6850 3920 YY_DPRINTF ((stderr, "Removing dead stacks.\n"));
6851 3920 yystackp->yytops.yysize -= 1;
6852 3920 }
6853 else
6854 {
6855 3976 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
6856 /* In the current implementation, it's unnecessary to copy
6857 yystackp->yytops.yylookaheadNeeds[yyi] since, after
6858 yyremoveDeletes returns, the parser immediately either enters
6859 deterministic operation or shifts a token. However, it doesn't
6860 hurt, and the code might evolve to need it. */
6861 3976 yystackp->yytops.yylookaheadNeeds[yyj] =
6862 3976 yystackp->yytops.yylookaheadNeeds[yyi];
6863
1/2
✓ Branch 0 taken 3976 times.
✗ Branch 1 not taken.
3976 if (yyj != yyi)
6864 YY_DPRINTF ((stderr, "Rename stack %ld -> %ld.\n",
6865 YY_CAST (long, yyi), YY_CAST (long, yyj)));
6866 3976 yyj += 1;
6867 }
6868 7896 yyi += 1;
6869 }
6870 3976 }
6871
6872 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
6873 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
6874 * value *YYVALP and source location *YYLOCP. */
6875 static inline void
6876 2249968574 yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6877 YYPTRDIFF_T yyposn,
6878 YYSTYPE* yyvalp, YYLTYPE* yylocp)
6879 {
6880 2249968574 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6881
6882 2249968574 yynewState->yylrState = yylrState;
6883 2249968574 yynewState->yyposn = yyposn;
6884 2249968574 yynewState->yyresolved = yytrue;
6885 2249968574 yynewState->yypred = yystackp->yytops.yystates[yyk];
6886 2249968574 yynewState->yysemantics.yyval = *yyvalp;
6887 2249968574 yynewState->yyloc = *yylocp;
6888 2249968574 yystackp->yytops.yystates[yyk] = yynewState;
6889
6890
1/2
✓ Branch 0 taken 2249968574 times.
✗ Branch 1 not taken.
2249968574 YY_RESERVE_GLRSTACK (yystackp);
6891 2249968574 }
6892
6893 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
6894 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
6895 * semantic value of YYRHS under the action for YYRULE. */
6896 static inline void
6897 23887 yyglrShiftDefer (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState,
6898 YYPTRDIFF_T yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
6899 {
6900 23887 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
6901 YY_ASSERT (yynewState->yyisState);
6902
6903 23887 yynewState->yylrState = yylrState;
6904 23887 yynewState->yyposn = yyposn;
6905 23887 yynewState->yyresolved = yyfalse;
6906 23887 yynewState->yypred = yystackp->yytops.yystates[yyk];
6907 23887 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
6908 23887 yystackp->yytops.yystates[yyk] = yynewState;
6909
6910 /* Invokes YY_RESERVE_GLRSTACK. */
6911 23887 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
6912 23887 }
6913
6914 #if YYDEBUG
6915
6916 /*----------------------------------------------------------------------.
6917 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
6918 `----------------------------------------------------------------------*/
6919
6920 static inline void
6921 yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk,
6922 yyRuleNum yyrule, std::unique_ptr<ZScript::ASTFile>& root)
6923 {
6924 int yynrhs = yyrhsLength (yyrule);
6925 int yylow = 1;
6926 int yyi;
6927 YY_FPRINTF ((stderr, "Reducing stack %ld by rule %d (line %d):\n",
6928 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
6929 if (! yynormal)
6930 yyfillin (yyvsp, 1, -yynrhs);
6931 /* The symbols being reduced. */
6932 for (yyi = 0; yyi < yynrhs; yyi++)
6933 {
6934 YY_FPRINTF ((stderr, " $%d = ", yyi + 1));
6935 yy_symbol_print (stderr,
6936 yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState),
6937 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval,
6938 &(YY_CAST (yyGLRStackItem const *, yyvsp)[YYFILL ((yyi + 1) - (yynrhs))].yystate.yyloc) , root);
6939 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
6940 YY_FPRINTF ((stderr, " (unresolved)"));
6941 YY_FPRINTF ((stderr, "\n"));
6942 }
6943 }
6944 #endif
6945
6946 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
6947 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
6948 * semantic values. Assumes that all ambiguities in semantic values
6949 * have been previously resolved. Set *YYVALP to the resulting value,
6950 * and *YYLOCP to the computed location (if any). Return value is as
6951 * for userAction. */
6952 static inline YYRESULTTAG
6953 1912519773 yydoAction (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
6954 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
6955 {
6956 1912519773 int yynrhs = yyrhsLength (yyrule);
6957
6958
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1912519773 times.
1912519773 if (yystackp->yysplitPoint == YY_NULLPTR)
6959 {
6960 /* Standard special case: single stack. */
6961 1912519773 yyGLRStackItem* yyrhs
6962 1912519773 = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yytops.yystates[yyk]);
6963 YY_ASSERT (yyk == 0);
6964 1912519773 yystackp->yynextFree -= yynrhs;
6965 1912519773 yystackp->yyspaceLeft += yynrhs;
6966 1912519773 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
6967 3825039546 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp, yyk,
6968 1912519773 yyvalp, yylocp, root);
6969 }
6970 else
6971 {
6972 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
6973 yyGLRState* yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
6974 = yystackp->yytops.yystates[yyk];
6975 int yyi;
6976 if (yynrhs == 0)
6977 /* Set default location. */
6978 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;
6979 for (yyi = 0; yyi < yynrhs; yyi += 1)
6980 {
6981 yys = yys->yypred;
6982 YY_ASSERT (yys);
6983 }
6984 yyupdateSplit (yystackp, yys);
6985 yystackp->yytops.yystates[yyk] = yys;
6986 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
6987 yystackp, yyk, yyvalp, yylocp, root);
6988 }
6989 1912519773 }
6990
6991 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
6992 * and push back on the resulting nonterminal symbol. Perform the
6993 * semantic action associated with YYRULE and store its value with the
6994 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
6995 * unambiguous. Otherwise, store the deferred semantic action with
6996 * the new state. If the new state would have an identical input
6997 * position, LR state, and predecessor to an existing state on the stack,
6998 * it is identified with that existing state, eliminating stack #YYK from
6999 * *YYSTACKP. In this case, the semantic value is
7000 * added to the options for the existing state's semantic value.
7001 */
7002 static inline YYRESULTTAG
7003 1912543660 yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule,
7004 yybool yyforceEval, std::unique_ptr<ZScript::ASTFile>& root)
7005 {
7006 1912543660 YYPTRDIFF_T yyposn = yystackp->yytops.yystates[yyk]->yyposn;
7007
7008
3/4
✓ Branch 0 taken 23887 times.
✓ Branch 1 taken 1912519773 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 23887 times.
1912543660 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
7009 {
7010 YYSTYPE yyval;
7011 YYLTYPE yyloc;
7012
7013 1912519773 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval, &yyloc, root);
7014
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1912519773 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1912519773 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
7015 YY_DPRINTF ((stderr,
7016 "Parse on stack %ld rejected by rule %d (line %d).\n",
7017 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule]));
7018
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1912519773 times.
1912519773 if (yyflag != yyok)
7019 return yyflag;
7020 3825039546 yyglrShift (yystackp, yyk,
7021 3825039546 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
7022 1912519773 yylhsNonterm (yyrule)),
7023 1912519773 yyposn, &yyval, &yyloc);
7024 1912519773 }
7025 else
7026 {
7027 YYPTRDIFF_T yyi;
7028 int yyn;
7029 23887 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
7030 yy_state_t yynewLRState;
7031
7032
2/2
✓ Branch 0 taken 26817 times.
✓ Branch 1 taken 23887 times.
50704 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
7033 50704 0 < yyn; yyn -= 1)
7034 {
7035 26817 yys = yys->yypred;
7036 YY_ASSERT (yys);
7037 26817 }
7038 23887 yyupdateSplit (yystackp, yys);
7039 23887 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
7040 23887 YY_DPRINTF ((stderr,
7041 "Reduced stack %ld by rule %d (line %d); action deferred. "
7042 "Now in state %d.\n",
7043 YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule],
7044 yynewLRState));
7045
2/2
✓ Branch 0 taken 23887 times.
✓ Branch 1 taken 47774 times.
71661 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
7046
3/4
✓ Branch 0 taken 23887 times.
✓ Branch 1 taken 23887 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 23887 times.
71661 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
7047 {
7048 23887 yyGLRState *yysplit = yystackp->yysplitPoint;
7049 23887 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
7050
5/6
✓ Branch 0 taken 26808 times.
✓ Branch 1 taken 20966 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 26808 times.
✓ Branch 4 taken 23887 times.
✓ Branch 5 taken 23887 times.
47774 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
7051 {
7052
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 23887 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
23887 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
7053 {
7054 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
7055 yymarkStackDeleted (yystackp, yyk);
7056 YY_DPRINTF ((stderr, "Merging stack %ld into stack %ld.\n",
7057 YY_CAST (long, yyk), YY_CAST (long, yyi)));
7058 return yyok;
7059 }
7060 23887 yyp = yyp->yypred;
7061 }
7062 23887 }
7063 23887 yystackp->yytops.yystates[yyk] = yys;
7064 23887 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
7065 }
7066 1912543660 return yyok;
7067 1912543660 }
7068
7069 static YYPTRDIFF_T
7070 3920 yysplitStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
7071 {
7072
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3920 times.
3920 if (yystackp->yysplitPoint == YY_NULLPTR)
7073 {
7074 YY_ASSERT (yyk == 0);
7075 3920 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
7076 3920 }
7077
1/2
✓ Branch 0 taken 3920 times.
✗ Branch 1 not taken.
3920 if (yystackp->yytops.yycapacity <= yystackp->yytops.yysize)
7078 {
7079 YYPTRDIFF_T state_size = YYSIZEOF (yystackp->yytops.yystates[0]);
7080 YYPTRDIFF_T half_max_capacity = YYSIZE_MAXIMUM / 2 / state_size;
7081 if (half_max_capacity < yystackp->yytops.yycapacity)
7082 yyMemoryExhausted (yystackp);
7083 yystackp->yytops.yycapacity *= 2;
7084
7085 {
7086 yyGLRState** yynewStates
7087 = YY_CAST (yyGLRState**,
7088 YYREALLOC (yystackp->yytops.yystates,
7089 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7090 * sizeof yynewStates[0])));
7091 if (yynewStates == YY_NULLPTR)
7092 yyMemoryExhausted (yystackp);
7093 yystackp->yytops.yystates = yynewStates;
7094 }
7095
7096 {
7097 yybool* yynewLookaheadNeeds
7098 = YY_CAST (yybool*,
7099 YYREALLOC (yystackp->yytops.yylookaheadNeeds,
7100 (YY_CAST (YYSIZE_T, yystackp->yytops.yycapacity)
7101 * sizeof yynewLookaheadNeeds[0])));
7102 if (yynewLookaheadNeeds == YY_NULLPTR)
7103 yyMemoryExhausted (yystackp);
7104 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
7105 }
7106 }
7107 3920 yystackp->yytops.yystates[yystackp->yytops.yysize]
7108 7840 = yystackp->yytops.yystates[yyk];
7109 3920 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
7110 7840 = yystackp->yytops.yylookaheadNeeds[yyk];
7111 3920 yystackp->yytops.yysize += 1;
7112 3920 return yystackp->yytops.yysize - 1;
7113 }
7114
7115 /** True iff YYY0 and YYY1 represent identical options at the top level.
7116 * That is, they represent the same rule applied to RHS symbols
7117 * that produce the same terminal symbols. */
7118 static yybool
7119 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
7120 {
7121 if (yyy0->yyrule == yyy1->yyrule)
7122 {
7123 yyGLRState *yys0, *yys1;
7124 int yyn;
7125 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7126 yyn = yyrhsLength (yyy0->yyrule);
7127 yyn > 0;
7128 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7129 if (yys0->yyposn != yys1->yyposn)
7130 return yyfalse;
7131 return yytrue;
7132 }
7133 else
7134 return yyfalse;
7135 }
7136
7137 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
7138 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
7139 static void
7140 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
7141 {
7142 yyGLRState *yys0, *yys1;
7143 int yyn;
7144 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
7145 yyn = yyrhsLength (yyy0->yyrule);
7146 0 < yyn;
7147 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
7148 {
7149 if (yys0 == yys1)
7150 break;
7151 else if (yys0->yyresolved)
7152 {
7153 yys1->yyresolved = yytrue;
7154 yys1->yysemantics.yyval = yys0->yysemantics.yyval;
7155 }
7156 else if (yys1->yyresolved)
7157 {
7158 yys0->yyresolved = yytrue;
7159 yys0->yysemantics.yyval = yys1->yysemantics.yyval;
7160 }
7161 else
7162 {
7163 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
7164 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
7165 while (yytrue)
7166 {
7167 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
7168 break;
7169 else if (*yyz0p == YY_NULLPTR)
7170 {
7171 *yyz0p = yyz1;
7172 break;
7173 }
7174 else if (*yyz0p < yyz1)
7175 {
7176 yySemanticOption* yyz = *yyz0p;
7177 *yyz0p = yyz1;
7178 yyz1 = yyz1->yynext;
7179 (*yyz0p)->yynext = yyz;
7180 }
7181 yyz0p = &(*yyz0p)->yynext;
7182 }
7183 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
7184 }
7185 }
7186 }
7187
7188 /** Y0 and Y1 represent two possible actions to take in a given
7189 * parsing state; return 0 if no combination is possible,
7190 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
7191 static int
7192 yypreference (yySemanticOption* y0, yySemanticOption* y1)
7193 {
7194 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
7195 int p0 = yydprec[r0], p1 = yydprec[r1];
7196
7197 if (p0 == p1)
7198 {
7199 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
7200 return 0;
7201 else
7202 return 1;
7203 }
7204 if (p0 == 0 || p1 == 0)
7205 return 0;
7206 if (p0 < p1)
7207 return 3;
7208 if (p1 < p0)
7209 return 2;
7210 return 0;
7211 }
7212
7213 static YYRESULTTAG
7214 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root);
7215
7216
7217 /** Resolve the previous YYN states starting at and including state YYS
7218 * on *YYSTACKP. If result != yyok, some states may have been left
7219 * unresolved possibly with empty semantic option chains. Regardless
7220 * of whether result = yyok, each state has been left with consistent
7221 * data so that yydestroyGLRState can be invoked if necessary. */
7222 static YYRESULTTAG
7223 14690 yyresolveStates (yyGLRState* yys, int yyn,
7224 yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7225 {
7226
2/2
✓ Branch 0 taken 3920 times.
✓ Branch 1 taken 10770 times.
14690 if (0 < yyn)
7227 {
7228 YY_ASSERT (yys->yypred);
7229
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10770 times.
10770 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, root));
7230
1/2
✓ Branch 0 taken 10770 times.
✗ Branch 1 not taken.
10770 if (! yys->yyresolved)
7231 YYCHK (yyresolveValue (yys, yystackp, root));
7232 10770 }
7233 14690 return yyok;
7234 14690 }
7235
7236 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
7237 * user action, and return the semantic value and location in *YYVALP
7238 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
7239 * have been destroyed (assuming the user action destroys all RHS
7240 * semantic values if invoked). */
7241 static YYRESULTTAG
7242 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
7243 YYSTYPE* yyvalp, YYLTYPE *yylocp, std::unique_ptr<ZScript::ASTFile>& root)
7244 {
7245 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
7246 int yynrhs = yyrhsLength (yyopt->yyrule);
7247 YYRESULTTAG yyflag =
7248 yyresolveStates (yyopt->yystate, yynrhs, yystackp, root);
7249 if (yyflag != yyok)
7250 {
7251 yyGLRState *yys;
7252 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
7253 yydestroyGLRState ("Cleanup: popping", yys, root);
7254 return yyflag;
7255 }
7256
7257 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
7258 if (yynrhs == 0)
7259 /* Set default location. */
7260 yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;
7261 {
7262 int yychar_current = yychar;
7263 YYSTYPE yylval_current = yylval;
7264 YYLTYPE yylloc_current = yylloc;
7265 yychar = yyopt->yyrawchar;
7266 yylval = yyopt->yyval;
7267 yylloc = yyopt->yyloc;
7268 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
7269 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
7270 yystackp, -1, yyvalp, yylocp, root);
7271 yychar = yychar_current;
7272 yylval = yylval_current;
7273 yylloc = yylloc_current;
7274 }
7275 return yyflag;
7276 }
7277
7278 #if YYDEBUG
7279 static void
7280 yyreportTree (yySemanticOption* yyx, int yyindent)
7281 {
7282 int yynrhs = yyrhsLength (yyx->yyrule);
7283 int yyi;
7284 yyGLRState* yys;
7285 yyGLRState* yystates[1 + YYMAXRHS];
7286 yyGLRState yyleftmost_state;
7287
7288 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
7289 yystates[yyi] = yys;
7290 if (yys == YY_NULLPTR)
7291 {
7292 yyleftmost_state.yyposn = 0;
7293 yystates[0] = &yyleftmost_state;
7294 }
7295 else
7296 yystates[0] = yys;
7297
7298 if (yyx->yystate->yyposn < yys->yyposn + 1)
7299 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, empty>\n",
7300 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7301 yyx->yyrule - 1));
7302 else
7303 YY_FPRINTF ((stderr, "%*s%s -> <Rule %d, tokens %ld .. %ld>\n",
7304 yyindent, "", yysymbol_name (yylhsNonterm (yyx->yyrule)),
7305 yyx->yyrule - 1, YY_CAST (long, yys->yyposn + 1),
7306 YY_CAST (long, yyx->yystate->yyposn)));
7307 for (yyi = 1; yyi <= yynrhs; yyi += 1)
7308 {
7309 if (yystates[yyi]->yyresolved)
7310 {
7311 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
7312 YY_FPRINTF ((stderr, "%*s%s <empty>\n", yyindent+2, "",
7313 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState))));
7314 else
7315 YY_FPRINTF ((stderr, "%*s%s <tokens %ld .. %ld>\n", yyindent+2, "",
7316 yysymbol_name (yy_accessing_symbol (yystates[yyi]->yylrState)),
7317 YY_CAST (long, yystates[yyi-1]->yyposn + 1),
7318 YY_CAST (long, yystates[yyi]->yyposn)));
7319 }
7320 else
7321 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
7322 }
7323 }
7324 #endif
7325
7326 static YYRESULTTAG
7327 yyreportAmbiguity (yySemanticOption* yyx0,
7328 yySemanticOption* yyx1, std::unique_ptr<ZScript::ASTFile>& root)
7329 {
7330 YY_USE (yyx0);
7331 YY_USE (yyx1);
7332
7333 #if YYDEBUG
7334 YY_FPRINTF ((stderr, "Ambiguity detected.\n"));
7335 YY_FPRINTF ((stderr, "Option 1,\n"));
7336 yyreportTree (yyx0, 2);
7337 YY_FPRINTF ((stderr, "\nOption 2,\n"));
7338 yyreportTree (yyx1, 2);
7339 YY_FPRINTF ((stderr, "\n"));
7340 #endif
7341
7342 yyerror (root, YY_("syntax is ambiguous"));
7343 return yyabort;
7344 }
7345
7346 /** Resolve the locations for each of the YYN1 states in *YYSTACKP,
7347 * ending at YYS1. Has no effect on previously resolved states.
7348 * The first semantic option of a state is always chosen. */
7349 static void
7350 yyresolveLocations (yyGLRState *yys1, int yyn1,
7351 yyGLRStack *yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7352 {
7353 if (0 < yyn1)
7354 {
7355 yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp, root);
7356 if (!yys1->yyresolved)
7357 {
7358 yyGLRStackItem yyrhsloc[1 + YYMAXRHS];
7359 int yynrhs;
7360 yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal;
7361 YY_ASSERT (yyoption);
7362 yynrhs = yyrhsLength (yyoption->yyrule);
7363 if (0 < yynrhs)
7364 {
7365 yyGLRState *yys;
7366 int yyn;
7367 yyresolveLocations (yyoption->yystate, yynrhs,
7368 yystackp, root);
7369 for (yys = yyoption->yystate, yyn = yynrhs;
7370 yyn > 0;
7371 yys = yys->yypred, yyn -= 1)
7372 yyrhsloc[yyn].yystate.yyloc = yys->yyloc;
7373 }
7374 else
7375 {
7376 /* Both yyresolveAction and yyresolveLocations traverse the GSS
7377 in reverse rightmost order. It is only necessary to invoke
7378 yyresolveLocations on a subforest for which yyresolveAction
7379 would have been invoked next had an ambiguity not been
7380 detected. Thus the location of the previous state (but not
7381 necessarily the previous state itself) is guaranteed to be
7382 resolved already. */
7383 yyGLRState *yyprevious = yyoption->yystate;
7384 yyrhsloc[0].yystate.yyloc = yyprevious->yyloc;
7385 }
7386 YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
7387 }
7388 }
7389 }
7390
7391 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
7392 * perform the indicated actions, and set the semantic value of YYS.
7393 * If result != yyok, the chain of semantic options in YYS has been
7394 * cleared instead or it has been left unmodified except that
7395 * redundant options may have been removed. Regardless of whether
7396 * result = yyok, YYS has been left with consistent data so that
7397 * yydestroyGLRState can be invoked if necessary. */
7398 static YYRESULTTAG
7399 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7400 {
7401 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
7402 yySemanticOption* yybest = yyoptionList;
7403 yySemanticOption** yypp;
7404 yybool yymerge = yyfalse;
7405 YYSTYPE yyval;
7406 YYRESULTTAG yyflag;
7407 YYLTYPE *yylocp = &yys->yyloc;
7408
7409 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
7410 {
7411 yySemanticOption* yyp = *yypp;
7412
7413 if (yyidenticalOptions (yybest, yyp))
7414 {
7415 yymergeOptionSets (yybest, yyp);
7416 *yypp = yyp->yynext;
7417 }
7418 else
7419 {
7420 switch (yypreference (yybest, yyp))
7421 {
7422 case 0:
7423 yyresolveLocations (yys, 1, yystackp, root);
7424 return yyreportAmbiguity (yybest, yyp, root);
7425 break;
7426 case 1:
7427 yymerge = yytrue;
7428 break;
7429 case 2:
7430 break;
7431 case 3:
7432 yybest = yyp;
7433 yymerge = yyfalse;
7434 break;
7435 default:
7436 /* This cannot happen so it is not worth a YY_ASSERT (yyfalse),
7437 but some compilers complain if the default case is
7438 omitted. */
7439 break;
7440 }
7441 yypp = &yyp->yynext;
7442 }
7443 }
7444
7445 if (yymerge)
7446 {
7447 yySemanticOption* yyp;
7448 int yyprec = yydprec[yybest->yyrule];
7449 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7450 if (yyflag == yyok)
7451 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
7452 {
7453 if (yyprec == yydprec[yyp->yyrule])
7454 {
7455 YYSTYPE yyval_other;
7456 YYLTYPE yydummy;
7457 yyflag = yyresolveAction (yyp, yystackp, &yyval_other, &yydummy, root);
7458 if (yyflag != yyok)
7459 {
7460 yydestruct ("Cleanup: discarding incompletely merged value for",
7461 yy_accessing_symbol (yys->yylrState),
7462 &yyval, yylocp, root);
7463 break;
7464 }
7465 yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other);
7466 }
7467 }
7468 }
7469 else
7470 yyflag = yyresolveAction (yybest, yystackp, &yyval, yylocp, root);
7471
7472 if (yyflag == yyok)
7473 {
7474 yys->yyresolved = yytrue;
7475 yys->yysemantics.yyval = yyval;
7476 }
7477 else
7478 yys->yysemantics.yyfirstVal = YY_NULLPTR;
7479 return yyflag;
7480 }
7481
7482 static YYRESULTTAG
7483 3920 yyresolveStack (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7484 {
7485
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3920 times.
3920 if (yystackp->yysplitPoint != YY_NULLPTR)
7486 {
7487 yyGLRState* yys;
7488 int yyn;
7489
7490
2/2
✓ Branch 0 taken 10770 times.
✓ Branch 1 taken 3920 times.
14690 for (yyn = 0, yys = yystackp->yytops.yystates[0];
7491 14690 yys != yystackp->yysplitPoint;
7492 10770 yys = yys->yypred, yyn += 1)
7493 10770 continue;
7494
1/2
✓ Branch 0 taken 3920 times.
✗ Branch 1 not taken.
3920 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
7495 , root));
7496 3920 }
7497 3920 return yyok;
7498 3920 }
7499
7500 /** Called when returning to deterministic operation to clean up the extra
7501 * stacks. */
7502 static void
7503 3976 yycompressStack (yyGLRStack* yystackp)
7504 {
7505 /* yyr is the state after the split point. */
7506 yyGLRState *yyr;
7507
7508
3/4
✓ Branch 0 taken 3976 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3920 times.
✓ Branch 3 taken 56 times.
3976 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
7509 56 return;
7510
7511 {
7512 yyGLRState *yyp, *yyq;
7513
2/2
✓ Branch 0 taken 10770 times.
✓ Branch 1 taken 3920 times.
14690 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
7514 14690 yyp != yystackp->yysplitPoint;
7515 10770 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
7516 10770 yyp->yypred = yyr;
7517 }
7518
7519 3920 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
7520 3920 yystackp->yynextFree = YY_REINTERPRET_CAST (yyGLRStackItem*, yystackp->yysplitPoint) + 1;
7521 3920 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
7522 3920 yystackp->yysplitPoint = YY_NULLPTR;
7523 3920 yystackp->yylastDeleted = YY_NULLPTR;
7524
7525
2/2
✓ Branch 0 taken 3920 times.
✓ Branch 1 taken 10770 times.
14690 while (yyr != YY_NULLPTR)
7526 {
7527 10770 yystackp->yynextFree->yystate = *yyr;
7528 10770 yyr = yyr->yypred;
7529 10770 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
7530 10770 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
7531 10770 yystackp->yynextFree += 1;
7532 10770 yystackp->yyspaceLeft -= 1;
7533 }
7534 3976 }
7535
7536 static YYRESULTTAG
7537 11760 yyprocessOneStack (yyGLRStack* yystackp, YYPTRDIFF_T yyk,
7538 YYPTRDIFF_T yyposn, std::unique_ptr<ZScript::ASTFile>& root)
7539 {
7540
2/2
✓ Branch 0 taken 3920 times.
✓ Branch 1 taken 27807 times.
31727 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7541 {
7542 27807 yy_state_t yystate = yystackp->yytops.yystates[yyk]->yylrState;
7543 27807 YY_DPRINTF ((stderr, "Stack %ld Entering state %d\n",
7544 YY_CAST (long, yyk), yystate));
7545
7546 YY_ASSERT (yystate != YYFINAL);
7547
7548
2/2
✓ Branch 0 taken 5331 times.
✓ Branch 1 taken 22476 times.
27807 if (yyisDefaultedState (yystate))
7549 {
7550 YYRESULTTAG yyflag;
7551 5331 yyRuleNum yyrule = yydefaultAction (yystate);
7552
1/2
✓ Branch 0 taken 5331 times.
✗ Branch 1 not taken.
5331 if (yyrule == 0)
7553 {
7554 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7555 yymarkStackDeleted (yystackp, yyk);
7556 return yyok;
7557 }
7558 5331 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], root);
7559
1/2
✓ Branch 0 taken 5331 times.
✗ Branch 1 not taken.
5331 if (yyflag == yyerr)
7560 {
7561 YY_DPRINTF ((stderr,
7562 "Stack %ld dies "
7563 "(predicate failure or explicit user error).\n",
7564 YY_CAST (long, yyk)));
7565 yymarkStackDeleted (yystackp, yyk);
7566 return yyok;
7567 }
7568
1/2
✓ Branch 0 taken 5331 times.
✗ Branch 1 not taken.
5331 if (yyflag != yyok)
7569 return yyflag;
7570 5331 }
7571 else
7572 {
7573 22476 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7574 const short* yyconflicts;
7575 22476 const int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7576 22476 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
7577
7578
2/2
✓ Branch 0 taken 3920 times.
✓ Branch 1 taken 22476 times.
26396 for (/* nothing */; *yyconflicts; yyconflicts += 1)
7579 {
7580 YYRESULTTAG yyflag;
7581 3920 YYPTRDIFF_T yynewStack = yysplitStack (yystackp, yyk);
7582 3920 YY_DPRINTF ((stderr, "Splitting off stack %ld from %ld.\n",
7583 YY_CAST (long, yynewStack), YY_CAST (long, yyk)));
7584 7840 yyflag = yyglrReduce (yystackp, yynewStack,
7585 3920 *yyconflicts,
7586 3920 yyimmediate[*yyconflicts], root);
7587
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3920 times.
3920 if (yyflag == yyok)
7588
1/2
✓ Branch 0 taken 3920 times.
✗ Branch 1 not taken.
3920 YYCHK (yyprocessOneStack (yystackp, yynewStack,
7589 yyposn, root));
7590 else if (yyflag == yyerr)
7591 {
7592 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yynewStack)));
7593 yymarkStackDeleted (yystackp, yynewStack);
7594 }
7595 else
7596 return yyflag;
7597 3920 }
7598
7599
2/2
✓ Branch 0 taken 18556 times.
✓ Branch 1 taken 3920 times.
22476 if (yyisShiftAction (yyaction))
7600 3920 break;
7601
2/2
✓ Branch 0 taken 14636 times.
✓ Branch 1 taken 3920 times.
18556 else if (yyisErrorAction (yyaction))
7602 {
7603 3920 YY_DPRINTF ((stderr, "Stack %ld dies.\n", YY_CAST (long, yyk)));
7604 3920 yymarkStackDeleted (yystackp, yyk);
7605 3920 break;
7606 }
7607 else
7608 {
7609 29272 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
7610 14636 yyimmediate[-yyaction], root);
7611
1/2
✓ Branch 0 taken 14636 times.
✗ Branch 1 not taken.
14636 if (yyflag == yyerr)
7612 {
7613 YY_DPRINTF ((stderr,
7614 "Stack %ld dies "
7615 "(predicate failure or explicit user error).\n",
7616 YY_CAST (long, yyk)));
7617 yymarkStackDeleted (yystackp, yyk);
7618 break;
7619 }
7620
1/2
✓ Branch 0 taken 14636 times.
✗ Branch 1 not taken.
14636 else if (yyflag != yyok)
7621 return yyflag;
7622 }
7623 }
7624 }
7625 11760 return yyok;
7626 11760 }
7627
7628 /* Put in YYARG at most YYARGN of the expected tokens given the
7629 current YYSTACKP, and return the number of tokens stored in YYARG. If
7630 YYARG is null, return the number of expected tokens (guaranteed to
7631 be less than YYNTOKENS). */
7632 static int
7633 56 yypcontext_expected_tokens (const yyGLRStack* yystackp,
7634 yysymbol_kind_t yyarg[], int yyargn)
7635 {
7636 /* Actual size of YYARG. */
7637 56 int yycount = 0;
7638 56 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
7639
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (!yypact_value_is_default (yyn))
7640 {
7641 /* Start YYX at -YYN if negative to avoid negative indexes in
7642 YYCHECK. In other words, skip the first -YYN actions for
7643 this state because they are default actions. */
7644
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 int yyxbegin = yyn < 0 ? -yyn : 0;
7645 /* Stay within bounds of both yycheck and yytname. */
7646 56 int yychecklim = YYLAST - yyn + 1;
7647
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
7648 int yyx;
7649
2/2
✓ Branch 0 taken 7218 times.
✓ Branch 1 taken 55 times.
7273 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
7650
3/4
✓ Branch 0 taken 108 times.
✓ Branch 1 taken 7110 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 108 times.
7218 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
7651 7217 && !yytable_value_is_error (yytable[yyx + yyn]))
7652 {
7653
1/2
✓ Branch 0 taken 108 times.
✗ Branch 1 not taken.
108 if (!yyarg)
7654 ++yycount;
7655
2/2
✓ Branch 0 taken 107 times.
✓ Branch 1 taken 1 times.
108 else if (yycount == yyargn)
7656 1 return 0;
7657 else
7658 107 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
7659 107 }
7660 55 }
7661
2/6
✓ Branch 0 taken 55 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 55 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
55 if (yyarg && yycount == 0 && 0 < yyargn)
7662 yyarg[0] = YYSYMBOL_YYEMPTY;
7663 55 return yycount;
7664 56 }
7665
7666 static int
7667 56 yy_syntax_error_arguments (const yyGLRStack* yystackp,
7668 yysymbol_kind_t yyarg[], int yyargn)
7669 {
7670
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
✓ Branch 2 taken 56 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 56 times.
✗ Branch 5 not taken.
56 yysymbol_kind_t yytoken = yychar == TOK_YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
7671 /* Actual size of YYARG. */
7672 56 int yycount = 0;
7673 /* There are many possibilities here to consider:
7674 - If this state is a consistent state with a default action, then
7675 the only way this function was invoked is if the default action
7676 is an error action. In that case, don't check for expected
7677 tokens because there are none.
7678 - The only way there can be no lookahead present (in yychar) is if
7679 this state is a consistent state with a default action. Thus,
7680 detecting the absence of a lookahead is sufficient to determine
7681 that there is no unexpected or expected token to report. In that
7682 case, just report a simple "syntax error".
7683 - Don't assume there isn't a lookahead just because this state is a
7684 consistent state with a default action. There might have been a
7685 previous inconsistent state, consistent state with a non-default
7686 action, or user semantic action that manipulated yychar.
7687 - Of course, the expected token list depends on states to have
7688 correct lookahead information, and it depends on the parser not
7689 to perform extra reductions after fetching a lookahead from the
7690 scanner and before detecting a syntax error. Thus, state merging
7691 (from LALR or IELR) and default reductions corrupt the expected
7692 token list. However, the list is correct for canonical LR with
7693 one exception: it will still contain any token that will not be
7694 accepted due to an error action in a later state.
7695 */
7696
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yytoken != YYSYMBOL_YYEMPTY)
7697 {
7698 int yyn;
7699
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yyarg)
7700 56 yyarg[yycount] = yytoken;
7701 56 ++yycount;
7702 112 yyn = yypcontext_expected_tokens (yystackp,
7703
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
7704
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yyn == YYENOMEM)
7705 return YYENOMEM;
7706 else
7707 56 yycount += yyn;
7708 56 }
7709 56 return yycount;
7710 56 }
7711
7712
7713
7714 static void
7715 56 yyreportSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7716 {
7717
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yyerrState != 0)
7718 return;
7719 {
7720 56 yybool yysize_overflow = yyfalse;
7721 56 char* yymsg = YY_NULLPTR;
7722 enum { YYARGS_MAX = 5 };
7723 /* Internationalized format string. */
7724 56 const char *yyformat = YY_NULLPTR;
7725 /* Arguments of yyformat: reported tokens (one for the "unexpected",
7726 one per "expected"). */
7727 yysymbol_kind_t yyarg[YYARGS_MAX];
7728 /* Cumulated lengths of YYARG. */
7729 56 YYPTRDIFF_T yysize = 0;
7730
7731 /* Actual size of YYARG. */
7732 56 int yycount
7733 56 = yy_syntax_error_arguments (yystackp, yyarg, YYARGS_MAX);
7734
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yycount == YYENOMEM)
7735 yyMemoryExhausted (yystackp);
7736
7737
3/7
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 7 times.
✓ Branch 4 taken 48 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
56 switch (yycount)
7738 {
7739 #define YYCASE_(N, S) \
7740 case N: \
7741 yyformat = S; \
7742 break
7743 default: /* Avoid compiler warnings. */
7744 YYCASE_(0, YY_("syntax error"));
7745 1 YYCASE_(1, YY_("syntax error, unexpected %s"));
7746 7 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
7747 48 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
7748 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
7749 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
7750 #undef YYCASE_
7751 }
7752
7753 /* Compute error message size. Don't count the "%s"s, but reserve
7754 room for the terminator. */
7755 56 yysize = yystrlen (yyformat) - 2 * yycount + 1;
7756 {
7757 int yyi;
7758
2/2
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 56 times.
215 for (yyi = 0; yyi < yycount; ++yyi)
7759 {
7760 159 YYPTRDIFF_T yysz
7761 159 = yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
7762
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 159 times.
159 if (YYSIZE_MAXIMUM - yysize < yysz)
7763 yysize_overflow = yytrue;
7764 else
7765 159 yysize += yysz;
7766 159 }
7767 }
7768
7769
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (!yysize_overflow)
7770 56 yymsg = YY_CAST (char *, YYMALLOC (YY_CAST (YYSIZE_T, yysize)));
7771
7772
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yymsg)
7773 {
7774 56 char *yyp = yymsg;
7775 56 int yyi = 0;
7776
2/2
✓ Branch 0 taken 2411 times.
✓ Branch 1 taken 56 times.
2467 while ((*yyp = *yyformat))
7777 {
7778
4/6
✓ Branch 0 taken 159 times.
✓ Branch 1 taken 2252 times.
✓ Branch 2 taken 159 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 159 times.
2411 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
7779 {
7780 159 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
7781 159 yyformat += 2;
7782 159 }
7783 else
7784 {
7785 2252 ++yyp;
7786 2252 ++yyformat;
7787 }
7788 }
7789 56 yyerror (root, yymsg);
7790 56 YYFREE (yymsg);
7791 56 }
7792 else
7793 {
7794 yyerror (root, YY_("syntax error"));
7795 yyMemoryExhausted (yystackp);
7796 }
7797 }
7798 56 yynerrs += 1;
7799 56 }
7800
7801 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
7802 yylval, and yylloc are the syntactic category, semantic value, and location
7803 of the lookahead. */
7804 static void
7805 56 yyrecoverSyntaxError (yyGLRStack* yystackp, std::unique_ptr<ZScript::ASTFile>& root)
7806 {
7807
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yyerrState == 3)
7808 /* We just shifted the error token and (perhaps) took some
7809 reductions. Skip tokens until we can proceed. */
7810 while (yytrue)
7811 {
7812 yysymbol_kind_t yytoken;
7813 int yyj;
7814 if (yychar == TOK_YYEOF)
7815 yyFail (yystackp, root, YY_NULLPTR);
7816 if (yychar != TOK_YYEMPTY)
7817 {
7818 /* We throw away the lookahead, but the error range
7819 of the shifted error token must take it into account. */
7820 yyGLRState *yys = yystackp->yytops.yystates[0];
7821 yyGLRStackItem yyerror_range[3];
7822 yyerror_range[1].yystate.yyloc = yys->yyloc;
7823 yyerror_range[2].yystate.yyloc = yylloc;
7824 YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);
7825 yytoken = YYTRANSLATE (yychar);
7826 yydestruct ("Error: discarding",
7827 yytoken, &yylval, &yylloc, root);
7828 yychar = TOK_YYEMPTY;
7829 }
7830 yytoken = yygetToken (&yychar, root);
7831 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
7832 if (yypact_value_is_default (yyj))
7833 return;
7834 yyj += yytoken;
7835 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
7836 {
7837 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
7838 return;
7839 }
7840 else if (! yytable_value_is_error (yytable[yyj]))
7841 return;
7842 }
7843
7844 /* Reduce to one stack. */
7845 {
7846 YYPTRDIFF_T yyk;
7847
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
7848
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
7849 56 break;
7850
1/2
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
56 if (yyk >= yystackp->yytops.yysize)
7851 yyFail (yystackp, root, YY_NULLPTR);
7852
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
7853 yymarkStackDeleted (yystackp, yyk);
7854 56 yyremoveDeletes (yystackp);
7855 56 yycompressStack (yystackp);
7856 }
7857
7858 /* Pop stack until we find a state that shifts the error token. */
7859 56 yystackp->yyerrState = 3;
7860
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 502 times.
558 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
7861 {
7862 502 yyGLRState *yys = yystackp->yytops.yystates[0];
7863 502 int yyj = yypact[yys->yylrState];
7864
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 446 times.
502 if (! yypact_value_is_default (yyj))
7865 {
7866 446 yyj += YYSYMBOL_YYerror;
7867
3/6
✓ Branch 0 taken 445 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 445 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
446 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYSYMBOL_YYerror
7868
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 445 times.
445 && yyisShiftAction (yytable[yyj]))
7869 {
7870 /* Shift the error token. */
7871 int yyaction = yytable[yyj];
7872 /* First adjust its location.*/
7873 YYLTYPE yyerrloc;
7874 yystackp->yyerror_range[2].yystate.yyloc = yylloc;
7875 YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);
7876 YY_SYMBOL_PRINT ("Shifting", yy_accessing_symbol (yyaction),
7877 &yylval, &yyerrloc);
7878 yyglrShift (yystackp, 0, yyaction,
7879 yys->yyposn, &yylval, &yyerrloc);
7880 yys = yystackp->yytops.yystates[0];
7881 break;
7882 }
7883 446 }
7884 502 yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;
7885
2/2
✓ Branch 0 taken 446 times.
✓ Branch 1 taken 56 times.
502 if (yys->yypred != YY_NULLPTR)
7886 446 yydestroyGLRState ("Error: popping", yys, root);
7887 502 yystackp->yytops.yystates[0] = yys->yypred;
7888 502 yystackp->yynextFree -= 1;
7889 502 yystackp->yyspaceLeft += 1;
7890 }
7891
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
7892 56 yyFail (yystackp, root, YY_NULLPTR);
7893 }
7894
7895 #define YYCHK1(YYE) \
7896 do { \
7897 switch (YYE) { \
7898 case yyok: break; \
7899 case yyabort: goto yyabortlab; \
7900 case yyaccept: goto yyacceptlab; \
7901 case yyerr: goto yyuser_error; \
7902 case yynomem: goto yyexhaustedlab; \
7903 default: goto yybuglab; \
7904 } \
7905 } while (0)
7906
7907 /*----------.
7908 | yyparse. |
7909 `----------*/
7910
7911 int
7912 116057 yyparse (std::unique_ptr<ZScript::ASTFile>& root)
7913 {
7914 int yyresult;
7915 yyGLRStack yystack;
7916 116057 yyGLRStack* const yystackp = &yystack;
7917 YYPTRDIFF_T yyposn;
7918
7919 116057 YY_DPRINTF ((stderr, "Starting parse\n"));
7920
7921 116057 yychar = TOK_YYEMPTY;
7922 116057 yylval = yyval_default;
7923 116057 yylloc = yyloc_default;
7924
7925
1/2
✓ Branch 0 taken 116057 times.
✗ Branch 1 not taken.
116057 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
7926 goto yyexhaustedlab;
7927
2/4
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 116001 times.
✗ Branch 3 not taken.
116057 switch (YYSETJMP (yystack.yyexception_buffer))
7928 {
7929 116001 case 0: break;
7930 56 case 1: goto yyabortlab;
7931 case 2: goto yyexhaustedlab;
7932 default: goto yybuglab;
7933 }
7934 116001 yyglrShift (&yystack, 0, 0, 0, &yylval, &yylloc);
7935 116001 yyposn = 0;
7936
7937 116057 while (yytrue)
7938 {
7939 /* For efficiency, we have two loops, the first of which is
7940 specialized to deterministic operation (single stack, no
7941 potential ambiguity). */
7942 /* Standard mode. */
7943 2249968574 while (yytrue)
7944 {
7945 2249968574 yy_state_t yystate = yystack.yytops.yystates[0]->yylrState;
7946 2249968574 YY_DPRINTF ((stderr, "Entering state %d\n", yystate));
7947
2/2
✓ Branch 0 taken 2249852573 times.
✓ Branch 1 taken 116001 times.
2249968574 if (yystate == YYFINAL)
7948 116001 goto yyacceptlab;
7949
2/2
✓ Branch 0 taken 891589497 times.
✓ Branch 1 taken 1358263076 times.
2249852573 if (yyisDefaultedState (yystate))
7950 {
7951 891589497 yyRuleNum yyrule = yydefaultAction (yystate);
7952
1/2
✓ Branch 0 taken 891589497 times.
✗ Branch 1 not taken.
891589497 if (yyrule == 0)
7953 {
7954 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7955 yyreportSyntaxError (&yystack, root);
7956 goto yyuser_error;
7957 }
7958
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 891589497 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
891589497 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, root));
7959 891589497 }
7960 else
7961 {
7962 1358263076 yysymbol_kind_t yytoken = yygetToken (&yychar, root);
7963 const short* yyconflicts;
7964 1358263076 int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
7965
2/2
✓ Branch 0 taken 1358259156 times.
✓ Branch 1 taken 3920 times.
1358263076 if (*yyconflicts)
7966 /* Enter nondeterministic mode. */
7967 3920 break;
7968
2/2
✓ Branch 0 taken 337328824 times.
✓ Branch 1 taken 1020930332 times.
1358259156 if (yyisShiftAction (yyaction))
7969 {
7970 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
7971 337328824 yychar = TOK_YYEMPTY;
7972 337328824 yyposn += 1;
7973 337328824 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval, &yylloc);
7974
1/2
✓ Branch 0 taken 337328824 times.
✗ Branch 1 not taken.
337328824 if (0 < yystack.yyerrState)
7975 yystack.yyerrState -= 1;
7976 337328824 }
7977
2/2
✓ Branch 0 taken 1020930276 times.
✓ Branch 1 taken 56 times.
1020930332 else if (yyisErrorAction (yyaction))
7978 {
7979 56 yystack.yyerror_range[1].yystate.yyloc = yylloc;
7980 /* Issue an error message unless the scanner already
7981 did. */
7982
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 56 times.
56 if (yychar != TOK_YYerror)
7983 56 yyreportSyntaxError (&yystack, root);
7984 56 goto yyuser_error;
7985 }
7986 else
7987
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1020930276 times.
✗ Branch 5 not taken.
1020930276 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, root));
7988 }
7989 }
7990
7991 /* Nondeterministic mode. */
7992 3920 while (yytrue)
7993 {
7994 yysymbol_kind_t yytoken_to_shift;
7995 YYPTRDIFF_T yys;
7996
7997
2/2
✓ Branch 0 taken 3920 times.
✓ Branch 1 taken 3920 times.
7840 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
7998 3920 yystackp->yytops.yylookaheadNeeds[yys] = yychar != TOK_YYEMPTY;
7999
8000 /* yyprocessOneStack returns one of three things:
8001
8002 - An error flag. If the caller is yyprocessOneStack, it
8003 immediately returns as well. When the caller is finally
8004 yyparse, it jumps to an error label via YYCHK1.
8005
8006 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
8007 (&yystack, yys), which sets the top state of yys to NULL. Thus,
8008 yyparse's following invocation of yyremoveDeletes will remove
8009 the stack.
8010
8011 - yyok, when ready to shift a token.
8012
8013 Except in the first case, yyparse will invoke yyremoveDeletes and
8014 then shift the next token onto all remaining stacks. This
8015 synchronization of the shift (that is, after all preceding
8016 reductions on all stacks) helps prevent double destructor calls
8017 on yylval in the event of memory exhaustion. */
8018
8019
2/2
✓ Branch 0 taken 7840 times.
✓ Branch 1 taken 3920 times.
11760 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8020
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 7840 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
7840 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, root));
8021 3920 yyremoveDeletes (&yystack);
8022
1/2
✓ Branch 0 taken 3920 times.
✗ Branch 1 not taken.
3920 if (yystack.yytops.yysize == 0)
8023 {
8024 yyundeleteLastStack (&yystack);
8025 if (yystack.yytops.yysize == 0)
8026 yyFail (&yystack, root, YY_("syntax error"));
8027 YYCHK1 (yyresolveStack (&yystack, root));
8028 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8029 yystack.yyerror_range[1].yystate.yyloc = yylloc;
8030 yyreportSyntaxError (&yystack, root);
8031 goto yyuser_error;
8032 }
8033
8034 /* If any yyglrShift call fails, it will fail after shifting. Thus,
8035 a copy of yylval will already be on stack 0 in the event of a
8036 failure in the following loop. Thus, yychar is set to TOK_YYEMPTY
8037 before the loop to make sure the user destructor for yylval isn't
8038 called twice. */
8039
2/4
✓ Branch 0 taken 3920 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3920 times.
3920 yytoken_to_shift = YYTRANSLATE (yychar);
8040 3920 yychar = TOK_YYEMPTY;
8041 3920 yyposn += 1;
8042
2/2
✓ Branch 0 taken 3920 times.
✓ Branch 1 taken 3920 times.
7840 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
8043 {
8044 3920 yy_state_t yystate = yystack.yytops.yystates[yys]->yylrState;
8045 const short* yyconflicts;
8046 3920 int yyaction = yygetLRActions (yystate, yytoken_to_shift,
8047 &yyconflicts);
8048 /* Note that yyconflicts were handled by yyprocessOneStack. */
8049 3920 YY_DPRINTF ((stderr, "On stack %ld, ", YY_CAST (long, yys)));
8050 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
8051 3920 yyglrShift (&yystack, yys, yyaction, yyposn,
8052 &yylval, &yylloc);
8053 3920 YY_DPRINTF ((stderr, "Stack %ld now in state %d\n",
8054 YY_CAST (long, yys),
8055 yystack.yytops.yystates[yys]->yylrState));
8056 3920 }
8057
8058
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3920 times.
3920 if (yystack.yytops.yysize == 1)
8059 {
8060
1/6
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3920 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
3920 YYCHK1 (yyresolveStack (&yystack, root));
8061 3920 YY_DPRINTF ((stderr, "Returning to deterministic operation.\n"));
8062 3920 yycompressStack (&yystack);
8063 3920 break;
8064 }
8065 }
8066 3920 continue;
8067 yyuser_error:
8068 56 yyrecoverSyntaxError (&yystack, root);
8069 56 yyposn = yystack.yytops.yystates[0]->yyposn;
8070 }
8071
8072 yyacceptlab:
8073 116001 yyresult = 0;
8074 116001 goto yyreturnlab;
8075
8076 yybuglab:
8077 YY_ASSERT (yyfalse);
8078 goto yyabortlab;
8079
8080 yyabortlab:
8081 56 yyresult = 1;
8082 56 goto yyreturnlab;
8083
8084 yyexhaustedlab:
8085 yyerror (root, YY_("memory exhausted"));
8086 yyresult = 2;
8087 goto yyreturnlab;
8088
8089 yyreturnlab:
8090
2/2
✓ Branch 0 taken 116001 times.
✓ Branch 1 taken 56 times.
116057 if (yychar != TOK_YYEMPTY)
8091 56 yydestruct ("Cleanup: discarding lookahead",
8092
2/4
✓ Branch 0 taken 56 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 56 times.
56 YYTRANSLATE (yychar), &yylval, &yylloc, root);
8093
8094 /* If the stack is well-formed, pop the stack until it is empty,
8095 destroying its entries as we go. But free the stack regardless
8096 of whether it is well-formed. */
8097
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 116057 times.
116057 if (yystack.yyitems)
8098 {
8099 116057 yyGLRState** yystates = yystack.yytops.yystates;
8100
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 116057 times.
116057 if (yystates)
8101 {
8102 116057 YYPTRDIFF_T yysize = yystack.yytops.yysize;
8103 YYPTRDIFF_T yyk;
8104
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 116057 times.
116113 for (yyk = 0; yyk < yysize; yyk += 1)
8105
2/2
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 116001 times.
116057 if (yystates[yyk])
8106 {
8107
2/2
✓ Branch 0 taken 348003 times.
✓ Branch 1 taken 116001 times.
464004 while (yystates[yyk])
8108 {
8109 348003 yyGLRState *yys = yystates[yyk];
8110 348003 yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;
8111
2/2
✓ Branch 0 taken 232002 times.
✓ Branch 1 taken 116001 times.
348003 if (yys->yypred != YY_NULLPTR)
8112 232002 yydestroyGLRState ("Cleanup: popping", yys, root);
8113 348003 yystates[yyk] = yys->yypred;
8114 348003 yystack.yynextFree -= 1;
8115 348003 yystack.yyspaceLeft += 1;
8116 }
8117 116001 break;
8118 }
8119 116057 }
8120 116057 yyfreeGLRStack (&yystack);
8121 116057 }
8122
8123 116057 return yyresult;
8124 }
8125
8126 /* DEBUGGING ONLY */
8127 #if YYDEBUG
8128 /* Print *YYS and its predecessors. */
8129 static void
8130 yy_yypstack (yyGLRState* yys)
8131 {
8132 if (yys->yypred)
8133 {
8134 yy_yypstack (yys->yypred);
8135 YY_FPRINTF ((stderr, " -> "));
8136 }
8137 YY_FPRINTF ((stderr, "%d@%ld", yys->yylrState, YY_CAST (long, yys->yyposn)));
8138 }
8139
8140 /* Print YYS (possibly NULL) and its predecessors. */
8141 static void
8142 yypstates (yyGLRState* yys)
8143 {
8144 if (yys == YY_NULLPTR)
8145 YY_FPRINTF ((stderr, "<null>"));
8146 else
8147 yy_yypstack (yys);
8148 YY_FPRINTF ((stderr, "\n"));
8149 }
8150
8151 /* Print the stack #YYK. */
8152 static void
8153 yypstack (yyGLRStack* yystackp, YYPTRDIFF_T yyk)
8154 {
8155 yypstates (yystackp->yytops.yystates[yyk]);
8156 }
8157
8158 /* Print all the stacks. */
8159 static void
8160 yypdumpstack (yyGLRStack* yystackp)
8161 {
8162 #define YYINDEX(YYX) \
8163 YY_CAST (long, \
8164 ((YYX) \
8165 ? YY_REINTERPRET_CAST (yyGLRStackItem*, (YYX)) - yystackp->yyitems \
8166 : -1))
8167
8168 yyGLRStackItem* yyp;
8169 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
8170 {
8171 YY_FPRINTF ((stderr, "%3ld. ",
8172 YY_CAST (long, yyp - yystackp->yyitems)));
8173 if (*YY_REINTERPRET_CAST (yybool *, yyp))
8174 {
8175 YY_ASSERT (yyp->yystate.yyisState);
8176 YY_ASSERT (yyp->yyoption.yyisState);
8177 YY_FPRINTF ((stderr, "Res: %d, LR State: %d, posn: %ld, pred: %ld",
8178 yyp->yystate.yyresolved, yyp->yystate.yylrState,
8179 YY_CAST (long, yyp->yystate.yyposn),
8180 YYINDEX (yyp->yystate.yypred)));
8181 if (! yyp->yystate.yyresolved)
8182 YY_FPRINTF ((stderr, ", firstVal: %ld",
8183 YYINDEX (yyp->yystate.yysemantics.yyfirstVal)));
8184 }
8185 else
8186 {
8187 YY_ASSERT (!yyp->yystate.yyisState);
8188 YY_ASSERT (!yyp->yyoption.yyisState);
8189 YY_FPRINTF ((stderr, "Option. rule: %d, state: %ld, next: %ld",
8190 yyp->yyoption.yyrule - 1,
8191 YYINDEX (yyp->yyoption.yystate),
8192 YYINDEX (yyp->yyoption.yynext)));
8193 }
8194 YY_FPRINTF ((stderr, "\n"));
8195 }
8196
8197 YY_FPRINTF ((stderr, "Tops:"));
8198 {
8199 YYPTRDIFF_T yyi;
8200 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
8201 YY_FPRINTF ((stderr, "%ld: %ld; ", YY_CAST (long, yyi),
8202 YYINDEX (yystackp->yytops.yystates[yyi])));
8203 YY_FPRINTF ((stderr, "\n"));
8204 }
8205 #undef YYINDEX
8206 }
8207 #endif
8208
8209 #undef yylval
8210 #undef yychar
8211 #undef yynerrs
8212 #undef yylloc
8213
8214
8215
8216
8217 #line 2458 "/home/runner/work/ZQuestClassic/ZQuestClassic/src/parser/ffscript.ypp"
8218
8219
8220 /* programs */
8221
8222 std::string yyerrstr(string const& msg, int32_t row, int32_t col, char const* txt)
8223 {
8224 ostringstream out;
8225 out << msg << " ["
8226 << curfilename << " "
8227 << "Line " << row << " "
8228 << "Column " << col;
8229 if (yyleng)
8230 out << " '" << txt << "'";
8231 out << "]";
8232 return out.str();
8233 }
8234 void yymsg(string const& message, int32_t row, int32_t col, char const* txt)
8235 {
8236 zconsole_info(yyerrstr(message,row,col,txt).c_str());
8237 }
8238 void yywarn(string const& message, int32_t row, int32_t col, char const* txt)
8239 {
8240 zconsole_warn(yyerrstr(message,row,col,txt).c_str());
8241 zparser_warn_out(message);
8242 }
8243 void yyerrmsg(string const& message, int32_t row, int32_t col, char const* txt)
8244 {
8245 zconsole_error(yyerrstr(message,row,col,txt).c_str());
8246 zparser_error_out(message);
8247 }
8248 void yydb(string const& message, int32_t row, int32_t col, char const* txt)
8249 {
8250 zconsole_db(yyerrstr(message,row,col,txt).c_str());
8251 }
8252
8253 void yyerror(std::unique_ptr<ASTFile>&, const char *s)
8254 {
8255 yyerrmsg(s);
8256 }
8257
8258 namespace ZScript
8259 {
8260 std::unique_ptr<ASTFile> parseFile(std::string const& filename)
8261 {
8262 std::unique_ptr<ASTFile> result;
8263
8264 // Reset lexer.
8265 yyin = NULL;
8266 resetLexer();
8267
8268 // Read in the file.
8269 yyin = fopen(filename.c_str(), "r");
8270 yyout = std::tmpfile();
8271 if (!yyin)
8272 {
8273 zconsole_error("Can't open input file");
8274 return nullptr;
8275 }
8276 curfilename = filename;
8277
8278 // Run the parser.
8279 if (yyparse(result))
8280 {
8281 result.reset();
8282 }
8283 fclose(yyout);
8284 fclose(yyin);
8285
8286 return std::unique_ptr<ASTFile>(result.release());
8287 }
8288 };
8289